{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "8f4fae06",
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3aef6b2f",
   "metadata": {},
   "source": [
    "# 第四代网络\n",
    "2025/5/23： 目标是验证对于所有物体，在按实验划分的情况下能否训练出结果。\n",
    "\n",
    "## 数据读取、划分和可视化"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1708ed21",
   "metadata": {},
   "source": [
    "### 数据划分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "376e7a97",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集样本数: 635\n",
      "测试集样本数: 273\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from scipy import signal\n",
    "from pathlib import Path\n",
    "import random\n",
    "import torch\n",
    "import os\n",
    "\n",
    "# 设备配置\n",
    "DATA_ROOT = \"offline_dataset\"\n",
    "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
    "\n",
    "def calc_best_lag(delta, tacdata):\n",
    "    \"\"\" 计算delta与tacdata之间的最可能的延迟帧数 \"\"\"\n",
    "    force_data = tacdata[..., 6:9]\n",
    "    sum_force = np.mean(force_data, axis=1)\n",
    "    tangent_force = np.linalg.norm(sum_force[:,0:2], axis=1)\n",
    "    label = (1-delta) * np.max(tangent_force)\n",
    "\n",
    "    label_grad = np.gradient(label)\n",
    "    tangent_grad = np.gradient(tangent_force)\n",
    "\n",
    "    lags = signal.correlation_lags(len(label), len(tangent_force), mode='full')\n",
    "    corr_norm = signal.correlate(label_grad, tangent_grad, mode='full') \n",
    "    best_lag = lags[np.argmax(corr_norm)]\n",
    "    return -best_lag\n",
    "\n",
    "class DatasetDivider:\n",
    "    \"\"\"数据集划分器\"\"\"\n",
    "    def __init__(self, data_root):\n",
    "        self.data_root = data_root\n",
    "        self.sample_meta = []  # 存储(exp_path, sensor_id)\n",
    "        \n",
    "        # 遍历所有实验构建元数据\n",
    "        for exp_dir in os.listdir(data_root):\n",
    "            # if not (exp_dir.startswith('cube') or exp_dir.startswith('glassbrick') or exp_dir.startswith(\"medibox\")):\n",
    "            # # if not (exp_dir.startswith('cube')):\n",
    "            #     continue\n",
    "            exp_dir = os.path.join(data_root, exp_dir)\n",
    "            \n",
    "            # 遍历两个传感器\n",
    "            for sensor_id in [0, 1]:\n",
    "                label_path = os.path.join(exp_dir, f'{sensor_id}_label.npy')\n",
    "\n",
    "                tac_path = os.path.join(exp_dir, f'{sensor_id}_tacdata.npy')\n",
    "\n",
    "                \n",
    "                if not (os.path.exists(label_path) and os.path.exists(tac_path)):\n",
    "                    continue\n",
    "                \n",
    "                # 添加元数据记录\n",
    "                self.sample_meta.extend([\n",
    "                    (exp_dir, sensor_id) \n",
    "                ])\n",
    "    \n",
    "    def divide_dataset(self, train_ratio=0.8):\n",
    "        \"\"\"划分数据集\"\"\"\n",
    "        random.shuffle(self.sample_meta)\n",
    "        split_index = int(len(self.sample_meta) * train_ratio)\n",
    "        train_meta = self.sample_meta[:split_index]\n",
    "        test_meta = self.sample_meta[split_index:]\n",
    "        \n",
    "        return train_meta, test_meta\n",
    "    \n",
    "    def create_dataset(self, meta):\n",
    "        \"\"\"创建数据集\"\"\"\n",
    "\n",
    "        all_tacdata = []\n",
    "        all_labels = []\n",
    "        for exp_dir, sensor_id in meta:\n",
    "            label_path = os.path.join(exp_dir, f'{sensor_id}_label.npy')\n",
    "            tac_path = os.path.join(exp_dir, f'{sensor_id}_tacdata.npy')\n",
    "            \n",
    "            # 读取数据\n",
    "            labels = np.load(label_path)\n",
    "            tac_data = np.load(tac_path)\n",
    "            \n",
    "            # 处理延迟\n",
    "            best_lag = calc_best_lag(labels, tac_data)\n",
    "            if best_lag > 0:\n",
    "                labels = np.concatenate([np.ones(best_lag), labels[:-best_lag]])\n",
    "            \n",
    "            # 放入数据集\n",
    "            all_tacdata.append(tac_data)\n",
    "            all_labels.append(labels)\n",
    "        \n",
    "        return all_tacdata, all_labels\n",
    "\n",
    "data_divider = DatasetDivider(DATA_ROOT)\n",
    "train_meta, test_meta = data_divider.divide_dataset(train_ratio=0.7)\n",
    "print(f\"训练集样本数: {len(train_meta)}\")\n",
    "print(f\"测试集样本数: {len(test_meta)}\")\n",
    "\n",
    "# 创建训练集和测试集\n",
    "train_tacdata, train_labels = data_divider.create_dataset(train_meta)\n",
    "valid_tacdata, valid_labels = data_divider.create_dataset(test_meta)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "97ceaf82",
   "metadata": {},
   "source": [
    "### 数据分布检查"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7c9dd138",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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i4r9bCZv7bdy5crau3dvoeU7d+7U0aNHCyy7/PLLFRUVpW+//dbr10sVJf9zq+Li4txn1UqjQoUKat26tf7xj39oyJAhOnnypJYuXepeb/fzPFtffPFFoWWrV69Wbm6urrnmGveyypUrS1KRc1/c2/hCQkLKlDt/f/nF84+OHz+ub7/9VhUqVChU8gAg0ChNAOBl//3vf5WSkiKn06lBgwYVuIbl8ccflyT17t27yM+kyczM1A8//FDiPmJjY3Xw4EGdOnWq0LrExEQdOXKkwNvV8vLy9OSTT7qv8Smr/II0fvx4LVmyRJdeemmha2W8td/rrrtOO3fu1Oeff+5edvr0aaWnpxfatly5cnr00Ue1a9cuPfnkk0UWp40bN2r//v2l3n9x/vOf/6hLly6SpIkTJ6pixYq2269evbrIn0/+WZbw8HD3Mruf59l66aWXtGfPHvfj06dP65lnnpEk3X///e7l1157rSzL0uzZswvk2Lp1q1566aUix46NjS0wdkmaN2+upKQkffLJJ1q2bFmBdc8++6wOHTqk7t27F7jhAwAEA96eBwAe2rZtW4EPlN2/f7++/vprff/99woNDdXQoUPdn2WT75ZbbtGwYcM0ZswY1atXT7fccosSExN16NAhbdu2TV988YWeffZZXX755bb7vummm/Ttt9+qQ4cOatmypcLCwtSqVSu1atVK/fr105IlS9SiRQt169ZN4eHhysjI0N69e9W6desi/5W/JG3bttXFF1+sNWvWSPq99P2Zt/abnp6uJUuW6NZbb1X37t1VsWJFLV26VDExMUXeRGLUqFFau3at/vnPf2rhwoVq1aqV4uLitHfvXn3//ffasGGDVq9erbi4uFLt/9tvv3X/XE+dOqXffvtNX375pbZt26YKFSro1VdfLVA2ijNx4kStWLFCrVq1Up06dRQeHq61a9dq+fLlqlu3boEzkHY/z7N1/fXXq2HDhrr77rsVERGh//znP+7PCMsvgdLvdwXs3r27Zs6cqWuvvVa33HKL9u/fr48++ki33HKLPvzww0Jj33TTTXr//fd1xx136JprrlFoaKhuv/12XX311UVmCQkJ0YwZM5SSkqJbb71Vd911lxITE7V69WplZGQoKSlJEyZMOOvvGQC8LtD3PAeAc03+5zT98atChQqmZs2apk2bNmbYsGFm27ZttmMsXbrU3HbbbaZatWqmfPnypkaNGqZZs2ZmzJgxZvfu3e7tivt8nJycHNOnTx9Ts2ZNExoaWmibOXPmmMaNG5uKFSuaqlWrmm7dupnt27e7P7tnx44dZf6+R40aZSSZ0NBQ8+uvvxa5TVn2W9z3ZowxH3zwgWnQoIEJCwszNWrUMP369TM5OTnFfp5Rbm6ueeONN0zz5s1NVFSUcTgcpnbt2uaWW24xr732WoHPxCrOHz8PKf+rYsWK5qKLLjIpKSlmwoQJxX7fRX3G0eLFi819991nLrvsMhMZGWkqVapkrrjiCjNkyBBz4MCBAs+3+3nazVM+2XxO0/bt282ECRNMvXr1TFhYmElMTDQjR44s8JlH+U6cOGEef/xxU716deNwOMzVV19t/v3vfxeb4bfffjPdunUzVatWNSEhIQXmwC73//73P9O1a1dTtWpVU758eZOYmGj69+9faF6Msf8MqxtvvNHwUgaAP1jGGOPHjgYAAAAA5xSuaQIAAAAAG5QmAAAAALBBaQIAAAAAG5QmAAAAALBBaQIAAAAAG5QmAAAAALBxwX24rcvl0q+//qrIyEhZlhXoOAAAAAACxBijnJwcxcfHKySk+PNJF1xp+vXXX5WQkBDoGAAAAACCxC+//KKLLrqo2PUXXGmKjIyU9PvEREVFBTgNAAAAgEDJzs5WQkKCuyMU54IrTflvyYuKiqI0AQAAACjxsh1uBAEAAAAANihNAAAAAGCD0gQAAAAANihNAAAAAGCD0gQAAAAANihNAAAAAGCD0gQAAAAANihNAAAAAGCD0gQAAAAANihNAAAAAGCD0gQAAAAANihNAAAAAGCD0gQAAAAANihNAAAAAGCD0gQAAAAANihNAAAAAGCD0gQAAAAANihNAAAAAGCD0gQAAAAANsoFOsCFLvvUGZ1w5gY6hio6yikqvHygYwAAAABBh9IUYCecuXp79S4dPn46YBliI8J0X7NEShMAAABQBEpTEDh8/LQO5DgDHQMAAABAEbimCQAAAABsUJoAAAAAwAalCQAAAABsUJoAAAAAwAalCQAAAABsUJoAAAAAwAalCQAAAABsUJoAAAAAwAalCQAAAABsUJoAAAAAwAalCQAAAABsUJoAAAAAwAalCQAAAABsUJoAAAAAwAalCQAAAABsUJoAAAAAwAalCQAAAABsUJoAAAAAwAalCQAAAABsUJoAAAAAwAalCQAAAABsUJoAAAAAwAalCQAAAABsBFVpWrlypW677TbFx8fLsizNmzev2G0feeQRWZalSZMm+S0fAAAAgAtPUJWm48ePq2HDhnr11Vdtt/voo4+0Zs0axcfH+ykZAAAAgAtVuUAH+KMOHTqoQ4cOttvs3btX/fr106effqqOHTv6KRkAAACAC1VQlaaSuFwupaam6qmnntKVV15Zquc4nU45nU734+zsbPdYLpfLJznLwrhckowsmUCmkAmS+QAAAAD8pbSvf8+p0jRx4kSVK1dOjz/+eKmfM378eI0aNarQ8gMHDujUqVPejOeRo8edqmydVEj5MwHLEG25dPTwQVlOR8AyAAAAAP6Wk5NTqu3OmdL03Xff6aWXXtLatWtlWVapnzd48GClp6e7H2dnZyshIUHVqlVTVFSUL6KWick6qSPmqA6eCdzlZa5wh2JiqyouukLAMgAAAAD+Fh4eXqrtzpnS9MUXX2j//v2qXbu2e1leXp7+9re/adKkSdq5c2eRz3M4HHI4Cp9BCQkJUUhI4O+DYYWESLJkVPoi6IMUsoJkPgAAAAB/Ke3r33OmNKWmpqpdu3YFlqWkpCg1NVW9evUKUCoAAAAA57ugKk3Hjh3Ttm3b3I937Nih9evXKzY2VrVr11aVKlUKbF++fHnVqFFDl112mb+jAgAAALhABFVp+vbbb9WmTRv34/xrkdLS0jRjxowApQIAAABwIQuq0tS6dWsZU/pbbxd3HRMAAAAAeAtX/gMAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoTAAAAANigNAEAAACADUoT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2efCVzmKYjcfZc1Qv359ff/991q/fr376/bbb1ebNm20fv16JSQk+GUuSpPD13NRlLy8PH3//ffu8QN1XPw5R1G8PRfNmzfXtm3bCrwA/emnn1SzZk2FhYV5NKYvchTF7vfn2fw8PvjgAzmdTvXs2bPAcn8fF8XlKIq3j4sTJ04oJKTgS7z8QmuM8dtxUVKOovjq76okhYeHq1atWsrNzdWHH36oTp06eTSmLzIUpaS5KKuSXvP567WTJ689vT0XHgnsfSjOL7NnzzYOh8PMmDHDbN682Tz00EMmJibGfQva1NRUM2jQIPf2//3vf025cuXM3//+d/PDDz+YESNGFHnL8ZiYGDN//nzzv//9z3Tq1KnEW0t7M0NOTo558sknzerVq82OHTvMsmXLTOPGjc0ll1xiTp065bW5cDqdZt26dWbdunWmZs2a5sknnzTr1q0zW7duLfWY/sjwt7/9zWRkZJgdO3aY//73v6Zdu3amatWqZv/+/V6biwkTJpiwsDAzZ86cArfazMnJKbCNL4+LkjL467gYN26cWbJkidm+fbvZvHmz+fvf/27KlStn3nzzTY/nwhc5PJmPsmb4s6LuvuWPuSgphz/mYtSoUebTTz8127dvN99995255557THh4uNm0aZNf56KkHP6Yi927d5vIyEjz17/+1WzZssV8/PHHJi4uzjz77LOlHtNfOcr6+9PTY7NFixbm7rvvLnJMf/43UlwOfxwXI0aMMJGRkWbWrFnm559/NkuWLDFJSUmmW7dupR7TXzn88Xd1zZo15sMPPzTbt283K1euNDfddJOpU6eOOXLkiMfz4YsMZZ2LnJwc9+sWSeaFF14w69atM7t27TLGGDNo0CCTmprq3j7/Vt9PPfWU+eGHH8yrr75a5C3Hy3pc+CKHJ8eFr1GavOzll182tWvXNmFhYaZp06ZmzZo17nU33nijSUtLK7D9+++/by699FITFhZmrrzySrNw4cIC610ulxk2bJipXr26cTgcpm3btmbLli1+y3DixAnTvn17U61aNVO+fHmTmJho+vTpY/sfjyc5duzYYSQV+rrxxhtLPaY/Mtx9992mZs2aJiwszNSqVcvcfffdZtu2bV6di8TExCJzjBgxwr2Nr4+LkjL467h45plnTL169Ux4eLipXLmyadasmZk9e3aB8TyZC2/n8HQ+yvrf6h8V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9957bfdhjNFLL71U4rhRUVGqWrWqVq5cWWD55MmTC30fXbp00YcffqiNGzcWGqek+QEAeB9nmgAAXvHJJ5/oxx9/VG5urvbt26fPPvtMS5cuVWJiohYsWKDw8HD3tq+++qpatGihBg0aqE+fPqpbt6727dun1atXa8+ePdqwYUOx+7n22mv13nvvKT09Xdddd50qVaqk2267TX/5y180d+5cde7cWR07dtSOHTv0+uuv64orrtCxY8dK/X307NlTo0eP1vz589W8eXP350BJUv369ZWUlKQnn3xSe/fuVVRUlD788MNC1zYV58EHH9SECRP04IMPqkmTJlq5cqV++umnQttNmDBBK1asUHJysvr06aMrrrhChw8f1tq1a7Vs2TIdPny41N8PAMALDAAAZ2H69OlGkvsrLCzM1KhRw9x8883mpZdeMtnZ2UU+b/v27ea+++4zNWrUMOXLlze1atUyf/nLX8ycOXPc26xYscJIMitWrHAvO3bsmLn33ntNTEyMkWQSExONMca4XC4zbtw4k5iYaBwOh7nmmmvMxx9/bNLS0tzblNZ1111nJJnJkycXWrd582bTrl07U6lSJVO1alXTp08fs2HDBiPJTJ8+3b3diBEjzJ//zJ44ccI88MADJjo62kRGRppu3bqZ/fv3G0lmxIgRBbbdt2+f6du3r0lISDDly5c3NWrUMG3btjVTpkwp0/cCADh7ljF/eI8BAAAAAKAArmkCAAAAABuUJgAAAACwQWkCAAAAABuUJgAAAACwQWkCAAAAABuUJgAAAACwQWkCAAAAABuUJgAAAACwQWkCAAAAABuUJgAAAACwQWkCAAAAABuUJgAAAACw8f8As5enkgA739QAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import os\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def load_and_analyze_data(all_tacdata, all_labels):\n",
    "    \"\"\"加载数据并进行分析\"\"\"\n",
    "    \n",
    "    \n",
    "    frame_wise_label = np.concatenate(all_labels)\n",
    "    frame_wise_tacdata = np.concatenate(all_tacdata)\n",
    "    frame_cnt = frame_wise_label.shape[0]\n",
    "    # 遍历每一条数据\n",
    "    \n",
    "    \n",
    "    plt.figure(figsize=(10, 6))\n",
    "    plt.hist(frame_wise_label, \n",
    "            bins=np.arange(0, 1.1, 0.05), \n",
    "            edgecolor='white', \n",
    "            alpha=0.7,\n",
    "            density=True)\n",
    "    plt.title(\"Delta Value Distribution\", fontsize=14)\n",
    "    plt.xlabel(\"Delta Value\", fontsize=12)\n",
    "    plt.ylabel(\"Normalized Frequency\", fontsize=12)\n",
    "    plt.xticks(np.arange(0, 1.1, 0.05))\n",
    "    plt.grid(axis='y', alpha=0.3)\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "load_and_analyze_data(train_tacdata, train_labels)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0aa6c802",
   "metadata": {},
   "source": [
    "### 数据均衡"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "9b918702",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "平衡训练集...\n",
      "Class 0: 原始样本数 31113 => 目标 6400\n",
      "Class 1: 原始样本数 2063 => 目标 1600\n",
      "Class 2: 原始样本数 718 => 目标 1600\n",
      "Class 3: 原始样本数 561 => 目标 1600\n",
      "Class 4: 原始样本数 484 => 目标 1600\n",
      "Class 5: 原始样本数 441 => 目标 1600\n",
      "Class 6: 原始样本数 392 => 目标 1600\n",
      "Class 7: 原始样本数 337 => 目标 1600\n",
      "Class 8: 原始样本数 311 => 目标 1600\n",
      "Class 9: 原始样本数 255 => 目标 1600\n",
      "Class 10: 原始样本数 472 => 目标 1600\n",
      "Class 11: 原始样本数 6200 => 目标 3200\n",
      "平衡验证集...\n",
      "Class 0: 原始样本数 13170 => 目标 2600\n",
      "Class 1: 原始样本数 995 => 目标 650\n",
      "Class 2: 原始样本数 312 => 目标 650\n",
      "Class 3: 原始样本数 247 => 目标 650\n",
      "Class 4: 原始样本数 221 => 目标 650\n",
      "Class 5: 原始样本数 193 => 目标 650\n",
      "Class 6: 原始样本数 185 => 目标 650\n",
      "Class 7: 原始样本数 153 => 目标 650\n",
      "Class 8: 原始样本数 139 => 目标 650\n",
      "Class 9: 原始样本数 101 => 目标 650\n",
      "Class 10: 原始样本数 203 => 目标 650\n",
      "Class 11: 原始样本数 2658 => 目标 1300\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from sklearn.utils import shuffle\n",
    "\n",
    "def figure_augment(all_deltas: list, all_tacdata : list, bins, num_needed: int):\n",
    "    \"\"\"使用图片增强方法进行数据增强\"\"\"\n",
    "    origin_deltas = np.concatenate(all_deltas)\n",
    "    origin_tacdata = np.concatenate(all_tacdata)\n",
    "    mask = (origin_deltas >= bins[0]) & (origin_deltas < bins[1])\n",
    "    class_deltas = origin_deltas[mask]\n",
    "    class_tacdata = origin_tacdata[mask]\n",
    "    augmented_deltas = []\n",
    "    augmented_tacdata = []\n",
    "    augmented_cnt = 0\n",
    "\n",
    "    def figure_transformation(data):\n",
    "        data = data.reshape(20, 20, 9)\n",
    "        # 随机选择翻转\n",
    "        choice = np.random.randint(3)\n",
    "        if choice == 0:  # 原图\n",
    "            pass\n",
    "        elif choice == 1:  # 水平翻转\n",
    "            data = np.fliplr(data)\n",
    "        elif choice == 2:  # 垂直翻转\n",
    "            data = np.flipud(data)\n",
    "        # 随机选择旋转角度\n",
    "        choice = np.random.randint(4)\n",
    "        if choice == 0:  # 原图\n",
    "            pass\n",
    "        elif choice == 1:  # 旋转90度\n",
    "            data = np.rot90(data)\n",
    "        elif choice == 2:  # 旋转180度\n",
    "            data = np.rot90(data, 2)\n",
    "        elif choice == 3:  # 旋转270度\n",
    "            data = np.rot90(data, 3)\n",
    "        return data.reshape(400, 9)\n",
    "\n",
    "    while augmented_cnt < num_needed:\n",
    "        # 随机选择一个样本进行增强\n",
    "        idx = np.random.randint(0, len(class_deltas))\n",
    "        delta = class_deltas[idx]\n",
    "        tacdata = class_tacdata[idx]\n",
    "\n",
    "        augmented_delta = delta\n",
    "        new_tacdata = figure_transformation(tacdata)\n",
    "\n",
    "        # 添加到增强数据集中\n",
    "        augmented_deltas.append(augmented_delta)\n",
    "        augmented_tacdata.append(new_tacdata)\n",
    "        augmented_cnt += 1\n",
    "    return augmented_deltas, augmented_tacdata\n",
    "\n",
    "def interpolate_augment(all_deltas: list, all_tacdata : list, bins, num_needed: int):\n",
    "    lower, upper = bins\n",
    "    augmented_deltas = []\n",
    "    augmented_tacdata = []\n",
    "    augmented_cnt = 0\n",
    "    idx_loc_dict = {}\n",
    "    import tqdm\n",
    "\n",
    "    def interpolate(exp_idx, delta, tacdata, goal_label):\n",
    "        # 找到相邻两帧，goal_label在它们之间\n",
    "        if exp_idx not in idx_loc_dict:\n",
    "            idx = np.argmax(delta < goal_label)  # 找到第一个小于goal_label的索引\n",
    "            idx_loc_dict[exp_idx] = idx\n",
    "        else:\n",
    "            idx = idx_loc_dict[exp_idx]\n",
    "        # 如果idx为None，说明goal_label在delta的范围之外\n",
    "        if idx is None or idx == 0:\n",
    "            return None\n",
    "        if delta[idx-1] >= goal_label and delta[idx] <= goal_label:\n",
    "            # 线性插值\n",
    "            ratio = (goal_label - delta[idx]) / (delta[idx-1] - delta[idx])\n",
    "            new_tacdata = (1 - ratio) * tacdata[idx] + ratio * tacdata[idx-1]\n",
    "            return new_tacdata\n",
    "        return None\n",
    "\n",
    "    for _ in range(num_needed):\n",
    "        # 随机选择一个样本进行增强\n",
    "        goal_label = np.random.uniform(lower, upper)\n",
    "        new_delta = goal_label\n",
    "        new_tacdata = None\n",
    "        while new_tacdata is None:\n",
    "            idx = np.random.randint(0, len(all_deltas))\n",
    "            new_tacdata = interpolate(idx, all_deltas[idx], all_tacdata[idx], goal_label)\n",
    "\n",
    "\n",
    "        # 添加到增强数据集中\n",
    "        augmented_deltas.append(new_delta)\n",
    "        augmented_tacdata.append(new_tacdata)\n",
    "    \n",
    "    return augmented_deltas, augmented_tacdata\n",
    "\n",
    "\n",
    "\n",
    "def balance_dataset(all_deltas, all_tacdata, N, augment_function=figure_augment, eps=1e-2):\n",
    "    \"\"\"\n",
    "    平衡数据集\n",
    "    参数：\n",
    "    all_deltas : list/array - 所有样本的delta值\n",
    "    all_tacdata : list/array - 所有样本的触觉数据，形状为(num_samples, 400, 9)\n",
    "    N : int - 每个类别的目标样本数\n",
    "\n",
    "    返回：\n",
    "    balanced_deltas : array - 平衡后的delta值数组\n",
    "    balanced_tacdata : array - 平衡后的触觉数据数组\n",
    "    \"\"\"\n",
    "    # 计算现有数据样本数\n",
    "    origin_deltas = np.concatenate(all_deltas)\n",
    "    origin_tacdata = np.concatenate(all_tacdata)\n",
    "    \n",
    "    # 定义12个类别的区间边界\n",
    "    class_bins = [\n",
    "        (0, eps),                   # Class 0: δ < eps\n",
    "        (eps, 0.1),                       # Class 1: [eps, 0.1)\n",
    "        *[(0.1*i, 0.1*(i+1)) for i in range(1,9)],  # Class 2-9: [0.1,0.2)...[0.8,0.9)\n",
    "        (0.9, 1.0-eps),                   # Class 10: [0.9, 1-eps)\n",
    "        (1.0-eps, 1)                 # Class 11: δ >= 1-eps\n",
    "    ]\n",
    "    # 计算每个类别的样本数\n",
    "    augment_strength = np.ones(12, dtype=int)  # 每个类别的增强强度\n",
    "    augment_strength[0] = 4\n",
    "    augment_strength[11] = 2\n",
    "    goal_class_counts = augment_strength * N\n",
    "\n",
    "    # 初始化平衡数据集\n",
    "    balanced_deltas = []\n",
    "    balanced_tacdata = []\n",
    "    for class_idx, (lower, upper) in enumerate(class_bins):\n",
    "        # 获取当前类别的样本掩码\n",
    "        if class_idx == 0:\n",
    "            mask = (origin_deltas < upper)\n",
    "        elif class_idx == 11:\n",
    "            mask = (origin_deltas >= lower)\n",
    "        else:\n",
    "            mask = (origin_deltas >= lower) & (origin_deltas < upper)\n",
    "        \n",
    "        class_deltas = origin_deltas[mask]\n",
    "        class_tacdata = origin_tacdata[mask]\n",
    "        current_count = len(class_deltas)\n",
    "        \n",
    "        print(f\"Class {class_idx}: 原始样本数 {current_count} => 目标 {goal_class_counts[class_idx]}\")\n",
    "\n",
    "        # 采样策略\n",
    "        if current_count == 0:\n",
    "            continue  # 无样本可处理\n",
    "            \n",
    "        if current_count >= goal_class_counts[class_idx]:  # 下采样\n",
    "            indices = np.random.choice(current_count, goal_class_counts[class_idx], replace=False)\n",
    "            sampled_deltas = class_deltas[indices]\n",
    "            sampled_tacdata = class_tacdata[indices]\n",
    "        else:  # 过采样（数据增强）\n",
    "            num_needed = goal_class_counts[class_idx] - current_count\n",
    "            augmented_deltas, augmented_tacdata = augment_function(all_deltas, all_tacdata, (lower,upper), num_needed)\n",
    "            sampled_deltas = np.concatenate([class_deltas, augmented_deltas[:num_needed]])\n",
    "            sampled_tacdata = np.concatenate([class_tacdata, augmented_tacdata[:num_needed]])\n",
    "\n",
    "        # 添加当前类别样本到总数据集\n",
    "        balanced_deltas.append(sampled_deltas)\n",
    "        balanced_tacdata.append(sampled_tacdata)\n",
    "    \n",
    "    # 合并所有类别数据\n",
    "    balanced_deltas = np.concatenate(balanced_deltas)\n",
    "    balanced_tacdata = np.concatenate(balanced_tacdata, axis=0)\n",
    "\n",
    "    # 打乱数据顺序\n",
    "    balanced_deltas, balanced_tacdata = shuffle(balanced_deltas, balanced_tacdata)\n",
    "    return balanced_deltas, balanced_tacdata \n",
    "\n",
    "print(\"平衡训练集...\")\n",
    "balanced_train_deltas, balanced_train_tacdata = balance_dataset(train_labels, train_tacdata, 1600, augment_function=figure_augment)\n",
    "print(\"平衡验证集...\")\n",
    "balanced_valid_deltas, balanced_valid_tacdata = balance_dataset(valid_labels, valid_tacdata, 650, augment_function=figure_augment)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "93faaa64",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(9,)\n",
      "(9,)\n"
     ]
    }
   ],
   "source": [
    "mean = balanced_train_tacdata.mean(axis=(0,1))\n",
    "std = balanced_train_tacdata.std(axis=(0,1))\n",
    "print(mean.shape)\n",
    "print(std.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "b34d0bca",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "样本0形状: torch.Size([9, 20, 20])\n",
      "标签值: 0.2739204466342926\n",
      "样本1形状: torch.Size([9, 20, 20])\n",
      "标签值: 0.8167304992675781\n",
      "样本2形状: torch.Size([9, 20, 20])\n",
      "标签值: 0.18747299909591675\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "from torch.utils.data import Dataset, DataLoader, random_split\n",
    "from torchvision import transforms\n",
    "\n",
    "class TactileDataset(Dataset):\n",
    "    def __init__(self, tacdata, deltas):\n",
    "        \"\"\"\n",
    "        参数：\n",
    "        tacdata : numpy数组 (num_samples, 400, 9)\n",
    "        deltas : numpy数组 (num_samples,)\n",
    "        \"\"\"\n",
    "        \n",
    "        assert tacdata.shape[1:] == (400, 9), f\"无效的触觉数据形状: {tacdata.shape}\"\n",
    "        assert len(deltas) == tacdata.shape[0], \"数据与标签数量不匹配\"\n",
    "        \n",
    "        # 在Dataset类中添加\n",
    "\n",
    "\n",
    "        # 前处理\n",
    "        tacdata = (tacdata - mean) / std\n",
    "\n",
    "        self.tacdata = torch.tensor(tacdata, dtype=torch.float32)\n",
    "        self.deltas = torch.tensor(deltas, dtype=torch.float32)\n",
    "        self.augment = True  # 是否进行数据增强\n",
    "\n",
    "\n",
    "        \n",
    "        # 调整形状\n",
    "        self.tacdata = self.tacdata.view(-1, 20, 20, 9)\n",
    "        self.tacdata = self.tacdata.permute(0, 3, 1, 2)\n",
    "        self.augment_transform = transforms.Compose([\n",
    "            transforms.RandomHorizontalFlip(p=0.5),\n",
    "            transforms.RandomVerticalFlip(p=0.5),\n",
    "            transforms.RandomRotation(90)\n",
    "        ])\n",
    "\n",
    "        \n",
    "\n",
    "    def __len__(self):\n",
    "        return len(self.deltas)\n",
    "\n",
    "    def __getitem__(self, idx):\n",
    "        data = self.tacdata[idx]\n",
    "        if self.augment:\n",
    "            data = self.augment_transform(data)\n",
    "        return data, self.deltas[idx]\n",
    "\n",
    "# 使用示例 =============================================\n",
    "if __name__ == \"__main__\":\n",
    "    # 假设已经通过之前的balance_dataset得到平衡数据\n",
    "    # balanced_deltas, balanced_tacdata = balance_dataset(...)\n",
    "    \n",
    "    # 创建数据集\n",
    "    train_ds = TactileDataset(balanced_train_tacdata, balanced_train_deltas)\n",
    "    valid_ds = TactileDataset(balanced_valid_tacdata, balanced_valid_deltas)\n",
    "    \n",
    "    # 手动遍历数据集前几个样本\n",
    "    for i in range(3):\n",
    "        data, label = train_ds[i]\n",
    "        print(f\"样本{i}形状:\", data.shape)\n",
    "        print(f\"标签值:\", label.item())\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "84c02232",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集样本数: 25600\n",
      "验证集样本数: 10400\n"
     ]
    }
   ],
   "source": [
    "\n",
    "batch_size = 64\n",
    "train_loader = DataLoader(\n",
    "    train_ds,\n",
    "    batch_size=batch_size,\n",
    "    shuffle=True,\n",
    "    num_workers=0,\n",
    "    pin_memory=False\n",
    ")\n",
    "\n",
    "val_loader = DataLoader(\n",
    "    valid_ds,\n",
    "    batch_size=batch_size,\n",
    "    shuffle=False,\n",
    "    num_workers=0\n",
    ")\n",
    "\n",
    "# 验证数据形状\n",
    "print(f\"训练集样本数: {len(train_ds)}\")\n",
    "print(f\"验证集样本数: {len(valid_ds)}\")\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "ef1c3ace",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "样本批次形状：\n",
      "触觉数据: torch.Size([64, 9, 20, 20]) (batch_size × channels × height × width)\n",
      "Delta值: torch.Size([64])\n"
     ]
    }
   ],
   "source": [
    "# 查看一个批次的数据    \n",
    "sample_batch = next(iter(train_loader))\n",
    "tac_batch, delta_batch = sample_batch\n",
    "print(\"\\n样本批次形状：\")\n",
    "print(f\"触觉数据: {tac_batch.shape} (batch_size × channels × height × width)\")\n",
    "print(f\"Delta值: {delta_batch.shape}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fc39fee4",
   "metadata": {},
   "source": [
    "## 训练过程\n",
    "### 网络定义"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0f6834f7",
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "\n",
    "class TactileCNN(nn.Module):\n",
    "    def __init__(self, input_channels=9):\n",
    "        super().__init__()\n",
    "        \"\"\"\n",
    "        网络结构设计原则：\n",
    "        1. 渐进式增加通道数：16 → 32 → 64\n",
    "        2. 使用小卷积核（3×3）保持空间信息\n",
    "        3. 交替使用最大池化和深度可分离卷积控制参数量\n",
    "        4. 引入残差连接增强梯度流动\n",
    "        5. 使用全局平均池化替代全连接层防止过拟合\n",
    "        \"\"\"\n",
    "        # 输入形状：(batch_size, 9, 20, 20)\n",
    "        \n",
    "        # 初始卷积块\n",
    "        self.block1 = nn.Sequential(\n",
    "            nn.Conv2d(input_channels, 16, 3, padding=1),  # 16×20×20\n",
    "            nn.BatchNorm2d(16),\n",
    "            nn.ReLU(inplace=True),\n",
    "            nn.MaxPool2d(2)  # 16×10×10\n",
    "        )\n",
    "        \n",
    "        # 残差块1\n",
    "        self.resblock1 = nn.Sequential(\n",
    "            nn.Conv2d(16, 16, 3, padding=1),\n",
    "            nn.BatchNorm2d(16),\n",
    "            nn.ReLU(inplace=True),\n",
    "            nn.Conv2d(16, 16, 3, padding=1),\n",
    "            nn.BatchNorm2d(16)\n",
    "        )\n",
    "        \n",
    "        # 中间卷积块\n",
    "        self.block2 = nn.Sequential(\n",
    "            nn.Conv2d(16, 32, 3, padding=1),  # 32×10×10\n",
    "            nn.BatchNorm2d(32),\n",
    "            nn.ReLU(inplace=True),\n",
    "            nn.MaxPool2d(2)  # 32×5×5\n",
    "        )\n",
    "        \n",
    "        # 深度可分离卷积块\n",
    "        self.dwconv = nn.Sequential(\n",
    "            nn.Conv2d(32, 32, 3, groups=32, padding=1),  # 深度卷积\n",
    "            nn.Conv2d(32, 64, 1),  # 逐点卷积\n",
    "            nn.BatchNorm2d(64),\n",
    "            nn.ReLU(inplace=True)\n",
    "        )\n",
    "        \n",
    "        # 输出层\n",
    "        self.fc = nn.Sequential(\n",
    "            nn.AdaptiveAvgPool2d(1),  # 全局平均池化\n",
    "            nn.Flatten(),\n",
    "            nn.Dropout(0.5),\n",
    "            nn.Linear(64, 32),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(32, 1)\n",
    "        )\n",
    "\n",
    "    def forward(self, x):\n",
    "        # Block1\n",
    "        x = self.block1(x)  # 16×10×10\n",
    "        \n",
    "        # Residual connection\n",
    "        residual = x\n",
    "        x = self.resblock1(x) + residual\n",
    "        x = F.relu(x)\n",
    "        \n",
    "        # Block2\n",
    "        x = self.block2(x)  # 32×5×5\n",
    "        \n",
    "        # Depthwise separable\n",
    "        x = self.dwconv(x)  # 64×5×5\n",
    "        \n",
    "        # Final output\n",
    "        return self.fc(x)  # 输出形状：(batch_size, 1)\n",
    "\n",
    "# 模型参数打印\n",
    "if __name__ == \"__main__\":\n",
    "    model = TactileCNN()\n",
    "    print(model)\n",
    "    \n",
    "    # 计算参数量\n",
    "    total_params = sum(p.numel() for p in model.parameters())\n",
    "    print(f\"\\n总参数量: {total_params:,}\")  # 约14k参数\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "79c2f5f4",
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "\n",
    "class ChannelAttention(nn.Module):\n",
    "    \"\"\"通道注意力模块（SENet风格）\"\"\"\n",
    "    def __init__(self, channels, reduction=8):\n",
    "        super().__init__()\n",
    "        self.avg_pool = nn.AdaptiveAvgPool2d(1)\n",
    "        self.fc = nn.Sequential(\n",
    "            nn.Linear(channels, channels // reduction),\n",
    "            nn.ReLU(inplace=True),\n",
    "            nn.Linear(channels // reduction, channels),\n",
    "            nn.Sigmoid()\n",
    "        )\n",
    "\n",
    "    def forward(self, x):\n",
    "        b, c, _, _ = x.size()\n",
    "        y = self.avg_pool(x).view(b, c)\n",
    "        y = self.fc(y).view(b, c, 1, 1)\n",
    "        return x * y  # 通道加权\n",
    "\n",
    "class EnhancedTactileCNN(nn.Module):\n",
    "    def __init__(self, input_channels=9):\n",
    "        super().__init__()\n",
    "        \"\"\"\n",
    "        网络结构设计原则：\n",
    "        1. 渐进式增加通道数：16 → 32 → 64\n",
    "        2. 使用小卷积核（3×3）保持空间信息\n",
    "        3. 交替使用最大池化和深度可分离卷积控制参数量\n",
    "        4. 引入残差连接增强梯度流动\n",
    "        5. 使用全局平均池化替代全连接层防止过拟合\n",
    "        \"\"\"\n",
    "        # 输入形状：(batch_size, 9, 20, 20)\n",
    "        \n",
    "        # 初始卷积块\n",
    "        self.block1 = nn.Sequential(\n",
    "            ChannelAttention(input_channels),\n",
    "            nn.Conv2d(input_channels, 16, 3, padding=1),  # 16×20×20\n",
    "            nn.BatchNorm2d(16),\n",
    "            nn.ReLU(inplace=True),\n",
    "            nn.MaxPool2d(2)  # 16×10×10\n",
    "        )\n",
    "        \n",
    "        # 残差块1\n",
    "        self.resblock1 = nn.Sequential(\n",
    "            ChannelAttention(16),\n",
    "            nn.Conv2d(16, 16, 3, padding=1),\n",
    "            nn.BatchNorm2d(16),\n",
    "            nn.ReLU(inplace=True),\n",
    "            ChannelAttention(16),\n",
    "            nn.Conv2d(16, 16, 3, padding=1),\n",
    "            nn.BatchNorm2d(16)\n",
    "        )\n",
    "        \n",
    "        # 中间卷积块\n",
    "        self.block2 = nn.Sequential(\n",
    "            ChannelAttention(16),\n",
    "            nn.Conv2d(16, 32, 3, padding=1),  # 32×10×10\n",
    "            nn.BatchNorm2d(32),\n",
    "            nn.ReLU(inplace=True),\n",
    "            nn.MaxPool2d(2)  # 32×5×5\n",
    "        )\n",
    "        \n",
    "        # 深度可分离卷积块\n",
    "        self.dwconv = nn.Sequential(\n",
    "            ChannelAttention(32),\n",
    "            nn.Conv2d(32, 32, 3, groups=32, padding=1),  # 深度卷积\n",
    "            nn.Conv2d(32, 64, 1),  # 逐点卷积\n",
    "            nn.BatchNorm2d(64),\n",
    "            nn.ReLU(inplace=True)\n",
    "        )\n",
    "        \n",
    "        # 输出层\n",
    "        self.fc = nn.Sequential(\n",
    "            nn.AdaptiveAvgPool2d(1),  # 全局平均池化\n",
    "            nn.Flatten(),\n",
    "            nn.Dropout(0.5),\n",
    "            nn.Linear(64, 32),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(32, 1)\n",
    "        )\n",
    "\n",
    "    def forward(self, x):\n",
    "        # Block1\n",
    "        x = self.block1(x)  # 16×10×10\n",
    "        \n",
    "        # Residual connection\n",
    "        residual = x\n",
    "        x = self.resblock1(x) + residual\n",
    "        x = F.relu(x)\n",
    "        \n",
    "        # Block2\n",
    "        x = self.block2(x)  # 32×5×5\n",
    "        \n",
    "        # Depthwise separable\n",
    "        x = self.dwconv(x)  # 64×5×5\n",
    "        \n",
    "        # Final output\n",
    "        return self.fc(x)  # 输出形状：(batch_size, 1)\n",
    "\n",
    "# 参数计算\n",
    "if __name__ == \"__main__\":\n",
    "    model = EnhancedTactileCNN()\n",
    "    total_params = sum(p.numel() for p in model.parameters())\n",
    "    print(f\"总参数量: {total_params:,}\")  # 输出: 总参数量: 31,024\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "4d4ad35a",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/ad102/Programs/anaconda3/envs/gentle-grasp/lib/python3.10/site-packages/torchvision/models/_utils.py:135: UserWarning: Using 'weights' as positional parameter(s) is deprecated since 0.13 and may be removed in the future. Please use keyword parameter(s) instead.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[DeltaEstimator] Using random start network, no resources loaded.\n",
      "[Set Working Dir] Working directory set to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0\n",
      "[LayerUnfreezer] 解冻层: conv1\n",
      "[LayerUnfreezer] 解冻层: layer4.1.bn2\n",
      "[LayerUnfreezer] 解冻层: layer4.1.conv2\n",
      "模型总可训练参数量: 2431361\n"
     ]
    }
   ],
   "source": [
    "from slip_detector import DeltaEstimator\n",
    "\n",
    "# 创建模型实例\n",
    "delta_estimator = DeltaEstimator()\n",
    "delta_estimator.layer_unfreezer.unfreeze_n_layers(3)  # 解冻前两层\n",
    "delta_estimator.save_unfreeze_layer()\n",
    "total_params = sum(p.numel() for p in delta_estimator.model.parameters() if p.requires_grad)\n",
    "print(f\"模型总可训练参数量: {total_params}\")\n",
    "\n",
    "delta_estimator.save_mean_std(mean, std)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "92051d75",
   "metadata": {},
   "source": [
    "### 训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "4a5f83c1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "400\n"
     ]
    }
   ],
   "source": [
    "print(len(train_loader))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "902a11fe",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                       \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.051050, Val Loss: 0.030981\n",
      "Train MAE: 0.126930, Val MAE: 0.096350\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 2/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                       \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.033987, Val Loss: 0.024825\n",
      "Train MAE: 0.099297, Val MAE: 0.080762\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 3/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                       \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.029512, Val Loss: 0.022146\n",
      "Train MAE: 0.091162, Val MAE: 0.078757\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 4/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.027602, Val Loss: 0.021987\n",
      "Train MAE: 0.087545, Val MAE: 0.078403\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 5/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.025468, Val Loss: 0.021188\n",
      "Train MAE: 0.083633, Val MAE: 0.073524\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 6/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.024301, Val Loss: 0.020833\n",
      "Train MAE: 0.081421, Val MAE: 0.071693\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 7/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.024505, Val Loss: 0.019327\n",
      "Train MAE: 0.081853, Val MAE: 0.069971\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 8/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.023514, Val Loss: 0.018606\n",
      "Train MAE: 0.079636, Val MAE: 0.072264\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 9/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.023091, Val Loss: 0.018990\n",
      "Train MAE: 0.078867, Val MAE: 0.069054\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 10/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.022184, Val Loss: 0.018383\n",
      "Train MAE: 0.077450, Val MAE: 0.067288\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 11/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.022031, Val Loss: 0.016996\n",
      "Train MAE: 0.076740, Val MAE: 0.066441\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 12/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.022124, Val Loss: 0.017900\n",
      "Train MAE: 0.077518, Val MAE: 0.066826\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 13/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.021472, Val Loss: 0.017247\n",
      "Train MAE: 0.075867, Val MAE: 0.066864\n",
      "  → No improvement for 2 epoch(s).\n",
      "Epoch 14/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.021426, Val Loss: 0.017743\n",
      "Train MAE: 0.075231, Val MAE: 0.067923\n",
      "  → No improvement for 3 epoch(s).\n",
      "Epoch 15/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.021027, Val Loss: 0.016688\n",
      "Train MAE: 0.075177, Val MAE: 0.066148\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 16/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.020666, Val Loss: 0.017432\n",
      "Train MAE: 0.074183, Val MAE: 0.067953\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 17/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.020870, Val Loss: 0.016551\n",
      "Train MAE: 0.075014, Val MAE: 0.064725\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 18/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.019947, Val Loss: 0.017133\n",
      "Train MAE: 0.073259, Val MAE: 0.066512\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 19/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.020296, Val Loss: 0.016844\n",
      "Train MAE: 0.073565, Val MAE: 0.065006\n",
      "  → No improvement for 2 epoch(s).\n",
      "Epoch 20/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.020086, Val Loss: 0.016059\n",
      "Train MAE: 0.072952, Val MAE: 0.065443\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 21/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.019403, Val Loss: 0.016265\n",
      "Train MAE: 0.071743, Val MAE: 0.065986\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 22/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.019777, Val Loss: 0.015727\n",
      "Train MAE: 0.072497, Val MAE: 0.064131\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 23/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.019827, Val Loss: 0.015467\n",
      "Train MAE: 0.072662, Val MAE: 0.062627\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 24/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.019178, Val Loss: 0.016257\n",
      "Train MAE: 0.070927, Val MAE: 0.063562\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 25/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.019232, Val Loss: 0.016521\n",
      "Train MAE: 0.070757, Val MAE: 0.065086\n",
      "  → No improvement for 2 epoch(s).\n",
      "Epoch 26/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.018979, Val Loss: 0.015901\n",
      "Train MAE: 0.070861, Val MAE: 0.063427\n",
      "  → No improvement for 3 epoch(s).\n",
      "Epoch 27/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.019004, Val Loss: 0.015290\n",
      "Train MAE: 0.070633, Val MAE: 0.062470\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 28/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.019053, Val Loss: 0.015832\n",
      "Train MAE: 0.070887, Val MAE: 0.064501\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 29/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.018684, Val Loss: 0.014922\n",
      "Train MAE: 0.070317, Val MAE: 0.061660\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 30/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.018551, Val Loss: 0.016266\n",
      "Train MAE: 0.069865, Val MAE: 0.063153\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 31/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.018785, Val Loss: 0.017149\n",
      "Train MAE: 0.070244, Val MAE: 0.063867\n",
      "  → No improvement for 2 epoch(s).\n",
      "Epoch 32/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.018154, Val Loss: 0.015410\n",
      "Train MAE: 0.069230, Val MAE: 0.062797\n",
      "  → No improvement for 3 epoch(s).\n",
      "Epoch 33/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.018466, Val Loss: 0.014666\n",
      "Train MAE: 0.069501, Val MAE: 0.060591\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 34/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.017984, Val Loss: 0.015606\n",
      "Train MAE: 0.068576, Val MAE: 0.062291\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 35/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.018467, Val Loss: 0.014476\n",
      "Train MAE: 0.069454, Val MAE: 0.062377\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 36/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.017930, Val Loss: 0.014681\n",
      "Train MAE: 0.068504, Val MAE: 0.060727\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 37/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.017644, Val Loss: 0.015172\n",
      "Train MAE: 0.067794, Val MAE: 0.060898\n",
      "  → No improvement for 2 epoch(s).\n",
      "Epoch 38/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.017919, Val Loss: 0.015327\n",
      "Train MAE: 0.068578, Val MAE: 0.063276\n",
      "  → No improvement for 3 epoch(s).\n",
      "Epoch 39/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.018052, Val Loss: 0.014938\n",
      "Train MAE: 0.068563, Val MAE: 0.059433\n",
      "  → No improvement for 4 epoch(s).\n",
      "Epoch 40/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.017171, Val Loss: 0.014447\n",
      "Train MAE: 0.067055, Val MAE: 0.061562\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 41/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.017589, Val Loss: 0.014370\n",
      "Train MAE: 0.067933, Val MAE: 0.062228\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 42/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.017936, Val Loss: 0.014360\n",
      "Train MAE: 0.068374, Val MAE: 0.060746\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 43/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.017594, Val Loss: 0.015087\n",
      "Train MAE: 0.067943, Val MAE: 0.062505\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 44/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.017746, Val Loss: 0.013891\n",
      "Train MAE: 0.068052, Val MAE: 0.059387\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 45/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.017339, Val Loss: 0.014575\n",
      "Train MAE: 0.066787, Val MAE: 0.060612\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 46/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.017354, Val Loss: 0.013833\n",
      "Train MAE: 0.067070, Val MAE: 0.058681\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 47/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.017259, Val Loss: 0.013498\n",
      "Train MAE: 0.066944, Val MAE: 0.058110\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 48/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.017515, Val Loss: 0.014233\n",
      "Train MAE: 0.067458, Val MAE: 0.058001\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 49/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.017406, Val Loss: 0.014122\n",
      "Train MAE: 0.067302, Val MAE: 0.059130\n",
      "  → No improvement for 2 epoch(s).\n",
      "Epoch 50/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.017012, Val Loss: 0.014150\n",
      "Train MAE: 0.066284, Val MAE: 0.060844\n",
      "  → No improvement for 3 epoch(s).\n",
      "Epoch 51/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.017007, Val Loss: 0.014125\n",
      "Train MAE: 0.066636, Val MAE: 0.060661\n",
      "  → No improvement for 4 epoch(s).\n",
      "Epoch 52/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.016965, Val Loss: 0.016497\n",
      "Train MAE: 0.066518, Val MAE: 0.063443\n",
      "  → No improvement for 5 epoch(s).\n",
      "Epoch 53/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.016861, Val Loss: 0.014279\n",
      "Train MAE: 0.065963, Val MAE: 0.060463\n",
      "  → No improvement for 6 epoch(s).\n",
      "Epoch 54/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.016488, Val Loss: 0.013186\n",
      "Train MAE: 0.065416, Val MAE: 0.055880\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 55/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.015930, Val Loss: 0.013104\n",
      "Train MAE: 0.063888, Val MAE: 0.056466\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 56/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.015728, Val Loss: 0.013611\n",
      "Train MAE: 0.063474, Val MAE: 0.057761\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 57/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.015781, Val Loss: 0.013326\n",
      "Train MAE: 0.063723, Val MAE: 0.057721\n",
      "  → No improvement for 2 epoch(s).\n",
      "Epoch 58/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.015909, Val Loss: 0.013226\n",
      "Train MAE: 0.063878, Val MAE: 0.057131\n",
      "  → No improvement for 3 epoch(s).\n",
      "Epoch 59/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.015466, Val Loss: 0.013028\n",
      "Train MAE: 0.063289, Val MAE: 0.055856\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 60/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.015329, Val Loss: 0.012970\n",
      "Train MAE: 0.062734, Val MAE: 0.056723\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 61/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.015477, Val Loss: 0.013569\n",
      "Train MAE: 0.063048, Val MAE: 0.057197\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 62/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.016187, Val Loss: 0.013391\n",
      "Train MAE: 0.064255, Val MAE: 0.058067\n",
      "  → No improvement for 2 epoch(s).\n",
      "Epoch 63/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.015160, Val Loss: 0.013199\n",
      "Train MAE: 0.062546, Val MAE: 0.056269\n",
      "  → No improvement for 3 epoch(s).\n",
      "Epoch 64/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.015712, Val Loss: 0.013744\n",
      "Train MAE: 0.063605, Val MAE: 0.057582\n",
      "  → No improvement for 4 epoch(s).\n",
      "Epoch 65/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.015222, Val Loss: 0.013393\n",
      "Train MAE: 0.062651, Val MAE: 0.057429\n",
      "  → No improvement for 5 epoch(s).\n",
      "Epoch 66/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.015703, Val Loss: 0.013278\n",
      "Train MAE: 0.063809, Val MAE: 0.057267\n",
      "  → No improvement for 6 epoch(s).\n",
      "Epoch 67/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.014677, Val Loss: 0.012855\n",
      "Train MAE: 0.061159, Val MAE: 0.056378\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 68/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.015001, Val Loss: 0.012830\n",
      "Train MAE: 0.061758, Val MAE: 0.056219\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 69/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.014667, Val Loss: 0.012618\n",
      "Train MAE: 0.061371, Val MAE: 0.055495\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 70/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.014575, Val Loss: 0.012570\n",
      "Train MAE: 0.060892, Val MAE: 0.055816\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 71/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.014582, Val Loss: 0.012323\n",
      "Train MAE: 0.060693, Val MAE: 0.055131\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 72/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.014542, Val Loss: 0.012585\n",
      "Train MAE: 0.061074, Val MAE: 0.055181\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 73/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.014508, Val Loss: 0.012716\n",
      "Train MAE: 0.060694, Val MAE: 0.055343\n",
      "  → No improvement for 2 epoch(s).\n",
      "Epoch 74/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.014386, Val Loss: 0.012674\n",
      "Train MAE: 0.060525, Val MAE: 0.055702\n",
      "  → No improvement for 3 epoch(s).\n",
      "Epoch 75/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.014617, Val Loss: 0.013097\n",
      "Train MAE: 0.060984, Val MAE: 0.057221\n",
      "  → No improvement for 4 epoch(s).\n",
      "Epoch 76/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.014399, Val Loss: 0.012775\n",
      "Train MAE: 0.060644, Val MAE: 0.056100\n",
      "  → No improvement for 5 epoch(s).\n",
      "Epoch 77/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.014380, Val Loss: 0.012825\n",
      "Train MAE: 0.060322, Val MAE: 0.055731\n",
      "  → No improvement for 6 epoch(s).\n",
      "Epoch 78/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.014052, Val Loss: 0.012588\n",
      "Train MAE: 0.059699, Val MAE: 0.055342\n",
      "  → No improvement for 7 epoch(s).\n",
      "Epoch 79/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.014302, Val Loss: 0.012199\n",
      "Train MAE: 0.060231, Val MAE: 0.054093\n",
      "[Save] Model saved to /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "  → New best model saved.\n",
      "Epoch 80/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.014008, Val Loss: 0.012478\n",
      "Train MAE: 0.059729, Val MAE: 0.055315\n",
      "  → No improvement for 1 epoch(s).\n",
      "Epoch 81/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.013713, Val Loss: 0.012581\n",
      "Train MAE: 0.059118, Val MAE: 0.054916\n",
      "  → No improvement for 2 epoch(s).\n",
      "Epoch 82/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.013867, Val Loss: 0.012315\n",
      "Train MAE: 0.059402, Val MAE: 0.055392\n",
      "  → No improvement for 3 epoch(s).\n",
      "Epoch 83/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.013903, Val Loss: 0.012416\n",
      "Train MAE: 0.059365, Val MAE: 0.055004\n",
      "  → No improvement for 4 epoch(s).\n",
      "Epoch 84/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.013769, Val Loss: 0.012572\n",
      "Train MAE: 0.059145, Val MAE: 0.054821\n",
      "  → No improvement for 5 epoch(s).\n",
      "Epoch 85/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.013765, Val Loss: 0.012277\n",
      "Train MAE: 0.059120, Val MAE: 0.054643\n",
      "  → No improvement for 6 epoch(s).\n",
      "Epoch 86/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.013512, Val Loss: 0.012641\n",
      "Train MAE: 0.058503, Val MAE: 0.055384\n",
      "  → No improvement for 7 epoch(s).\n",
      "Epoch 87/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.013683, Val Loss: 0.012365\n",
      "Train MAE: 0.058934, Val MAE: 0.054417\n",
      "  → No improvement for 8 epoch(s).\n",
      "Epoch 88/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                        \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.013467, Val Loss: 0.012298\n",
      "Train MAE: 0.058339, Val MAE: 0.054588\n",
      "  → No improvement for 9 epoch(s).\n",
      "Epoch 89/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                         \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.013699, Val Loss: 0.012625\n",
      "Train MAE: 0.059065, Val MAE: 0.054919\n",
      "  → No improvement for 10 epoch(s).\n",
      "  → Early stopping triggered.\n",
      "[Load] Model loaded from /home/ad102/AutoRobotLab/projects/gentle-grasp-alpha/slip_detector/resources/res_0/best_model.pth\n",
      "Training complete. Best val loss: 0.012199\n"
     ]
    }
   ],
   "source": [
    "dict_train_history = delta_estimator.trainer.train(\n",
    "    train_loader,\n",
    "    val_loader,\n",
    "    num_epochs=100,\n",
    "    early_stopping_patience=10,\n",
    "    model_save_path=os.path.join(delta_estimator.working_dir, \"best_model.pth\"),\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "23be5b30",
   "metadata": {},
   "outputs": [],
   "source": [
    "np.save(os.path.join(delta_estimator.working_dir, \"unfreezed_layers.npy\"), delta_estimator.layer_unfreezer._current_index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "48c82e9d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Epoch 1/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 1/100: 100%|██████████| 400/400 [00:28<00:00, 14.20it/s, loss=0.0144]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0334\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 1/100: 100%|██████████| 163/163 [00:07<00:00, 21.68it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.1158 验证MSE: 0.0229 验证损失: 0.0229\n",
      "\n",
      "Epoch 2/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 2/100: 100%|██████████| 400/400 [00:24<00:00, 16.38it/s, loss=0.0142] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0192\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 2/100: 100%|██████████| 163/163 [00:09<00:00, 17.34it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0834 验证MSE: 0.0108 验证损失: 0.0108\n",
      "\n",
      "Epoch 3/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 3/100: 100%|██████████| 400/400 [00:26<00:00, 14.90it/s, loss=0.0194] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0161\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 3/100: 100%|██████████| 163/163 [00:08<00:00, 19.78it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.1005 验证MSE: 0.0151 验证损失: 0.0150\n",
      "\n",
      "Epoch 4/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 4/100: 100%|██████████| 400/400 [00:27<00:00, 14.57it/s, loss=0.0168] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0148\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 4/100: 100%|██████████| 163/163 [00:07<00:00, 21.27it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0844 验证MSE: 0.0119 验证损失: 0.0119\n",
      "\n",
      "Epoch 5/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 5/100: 100%|██████████| 400/400 [00:24<00:00, 16.06it/s, loss=0.0101] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0136\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 5/100: 100%|██████████| 163/163 [00:07<00:00, 21.03it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0943 验证MSE: 0.0134 验证损失: 0.0134\n",
      "\n",
      "Epoch 6/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 6/100: 100%|██████████| 400/400 [00:25<00:00, 15.66it/s, loss=0.0171] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0129\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 6/100: 100%|██████████| 163/163 [00:09<00:00, 16.86it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0865 验证MSE: 0.0113 验证损失: 0.0113\n",
      "\n",
      "Epoch 7/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 7/100: 100%|██████████| 400/400 [00:25<00:00, 15.80it/s, loss=0.00801]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0125\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 7/100: 100%|██████████| 163/163 [00:08<00:00, 18.18it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0900 验证MSE: 0.0132 验证损失: 0.0132\n",
      "\n",
      "Epoch 8/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 8/100: 100%|██████████| 400/400 [00:26<00:00, 14.90it/s, loss=0.00673]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0121\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 8/100: 100%|██████████| 163/163 [00:09<00:00, 16.78it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0794 验证MSE: 0.0099 验证损失: 0.0099\n",
      "\n",
      "Epoch 9/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 9/100: 100%|██████████| 400/400 [00:27<00:00, 14.51it/s, loss=0.00923]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0111\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 9/100: 100%|██████████| 163/163 [00:11<00:00, 14.66it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0834 验证MSE: 0.0115 验证损失: 0.0115\n",
      "\n",
      "Epoch 10/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 10/100: 100%|██████████| 400/400 [00:29<00:00, 13.55it/s, loss=0.0174] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0109\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 10/100: 100%|██████████| 163/163 [00:11<00:00, 14.13it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0796 验证MSE: 0.0099 验证损失: 0.0098\n",
      "\n",
      "Epoch 11/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 11/100: 100%|██████████| 400/400 [00:31<00:00, 12.57it/s, loss=0.00855]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0104\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 11/100: 100%|██████████| 163/163 [00:11<00:00, 14.30it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0819 验证MSE: 0.0104 验证损失: 0.0104\n",
      "\n",
      "Epoch 12/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 12/100: 100%|██████████| 400/400 [00:29<00:00, 13.52it/s, loss=0.0125] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0101\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 12/100: 100%|██████████| 163/163 [00:09<00:00, 17.43it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0778 验证MSE: 0.0094 验证损失: 0.0094\n",
      "\n",
      "Epoch 13/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 13/100: 100%|██████████| 400/400 [00:28<00:00, 14.02it/s, loss=0.00673]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0098\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 13/100: 100%|██████████| 163/163 [00:09<00:00, 17.29it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0826 验证MSE: 0.0104 验证损失: 0.0104\n",
      "\n",
      "Epoch 14/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 14/100: 100%|██████████| 400/400 [00:28<00:00, 13.81it/s, loss=0.00879]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0096\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 14/100: 100%|██████████| 163/163 [00:10<00:00, 15.93it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0683 验证MSE: 0.0084 验证损失: 0.0084\n",
      "\n",
      "Epoch 15/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 15/100: 100%|██████████| 400/400 [00:29<00:00, 13.52it/s, loss=0.00899]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0094\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 15/100: 100%|██████████| 163/163 [00:12<00:00, 12.57it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0704 验证MSE: 0.0081 验证损失: 0.0081\n",
      "\n",
      "Epoch 16/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 16/100: 100%|██████████| 400/400 [00:29<00:00, 13.38it/s, loss=0.00683]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0090\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 16/100: 100%|██████████| 163/163 [00:11<00:00, 13.96it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0696 验证MSE: 0.0081 验证损失: 0.0081\n",
      "\n",
      "Epoch 17/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 17/100: 100%|██████████| 400/400 [00:32<00:00, 12.23it/s, loss=0.00973]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0090\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 17/100: 100%|██████████| 163/163 [00:09<00:00, 17.56it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0663 验证MSE: 0.0079 验证损失: 0.0078\n",
      "\n",
      "Epoch 18/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 18/100: 100%|██████████| 400/400 [00:29<00:00, 13.43it/s, loss=0.0114] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0088\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 18/100: 100%|██████████| 163/163 [00:11<00:00, 14.44it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0646 验证MSE: 0.0074 验证损失: 0.0074\n",
      "\n",
      "Epoch 19/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 19/100: 100%|██████████| 400/400 [00:27<00:00, 14.36it/s, loss=0.0109] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0087\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 19/100: 100%|██████████| 163/163 [00:10<00:00, 15.43it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0646 验证MSE: 0.0075 验证损失: 0.0075\n",
      "\n",
      "Epoch 20/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 20/100: 100%|██████████| 400/400 [00:28<00:00, 13.82it/s, loss=0.00586]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0087\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 20/100: 100%|██████████| 163/163 [00:08<00:00, 18.17it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0614 验证MSE: 0.0073 验证损失: 0.0073\n",
      "\n",
      "Epoch 21/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 21/100: 100%|██████████| 400/400 [00:27<00:00, 14.69it/s, loss=0.00845]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0086\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 21/100: 100%|██████████| 163/163 [00:11<00:00, 14.74it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0609 验证MSE: 0.0076 验证损失: 0.0076\n",
      "\n",
      "Epoch 22/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 22/100: 100%|██████████| 400/400 [00:26<00:00, 15.16it/s, loss=0.011]  \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0089\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 22/100: 100%|██████████| 163/163 [00:09<00:00, 16.98it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0590 验证MSE: 0.0072 验证损失: 0.0072\n",
      "\n",
      "Epoch 23/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 23/100: 100%|██████████| 400/400 [00:30<00:00, 12.98it/s, loss=0.00593]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0086\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 23/100: 100%|██████████| 163/163 [00:11<00:00, 14.34it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0607 验证MSE: 0.0071 验证损失: 0.0071\n",
      "\n",
      "Epoch 24/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 24/100: 100%|██████████| 400/400 [00:27<00:00, 14.40it/s, loss=0.00933]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0085\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 24/100: 100%|██████████| 163/163 [00:08<00:00, 19.01it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0704 验证MSE: 0.0081 验证损失: 0.0081\n",
      "\n",
      "Epoch 25/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 25/100: 100%|██████████| 400/400 [00:28<00:00, 13.92it/s, loss=0.00795]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0083\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 25/100: 100%|██████████| 163/163 [00:08<00:00, 18.21it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0581 验证MSE: 0.0073 验证损失: 0.0073\n",
      "\n",
      "Epoch 26/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 26/100: 100%|██████████| 400/400 [00:28<00:00, 14.16it/s, loss=0.011]  \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0084\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 26/100: 100%|██████████| 163/163 [00:12<00:00, 13.28it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0709 验证MSE: 0.0081 验证损失: 0.0081\n",
      "\n",
      "Epoch 27/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 27/100: 100%|██████████| 400/400 [00:27<00:00, 14.34it/s, loss=0.00387]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0082\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 27/100: 100%|██████████| 163/163 [00:10<00:00, 16.26it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0637 验证MSE: 0.0075 验证损失: 0.0075\n",
      "\n",
      "Epoch 28/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 28/100: 100%|██████████| 400/400 [00:28<00:00, 14.07it/s, loss=0.00808]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0082\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 28/100: 100%|██████████| 163/163 [00:08<00:00, 19.80it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0639 验证MSE: 0.0074 验证损失: 0.0074\n",
      "\n",
      "Epoch 29/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 29/100: 100%|██████████| 400/400 [00:31<00:00, 12.82it/s, loss=0.00585]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0082\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 29/100: 100%|██████████| 163/163 [00:11<00:00, 14.15it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0618 验证MSE: 0.0073 验证损失: 0.0073\n",
      "\n",
      "Epoch 30/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 30/100: 100%|██████████| 400/400 [00:32<00:00, 12.37it/s, loss=0.00649]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0076\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 30/100: 100%|██████████| 163/163 [00:11<00:00, 14.72it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0590 验证MSE: 0.0070 验证损失: 0.0070\n",
      "\n",
      "Epoch 31/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 31/100: 100%|██████████| 400/400 [00:30<00:00, 13.12it/s, loss=0.00912]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0076\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 31/100: 100%|██████████| 163/163 [00:11<00:00, 14.18it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0576 验证MSE: 0.0070 验证损失: 0.0070\n",
      "\n",
      "Epoch 32/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 32/100: 100%|██████████| 400/400 [00:29<00:00, 13.57it/s, loss=0.00806]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0075\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 32/100: 100%|██████████| 163/163 [00:11<00:00, 14.67it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0591 验证MSE: 0.0069 验证损失: 0.0069\n",
      "\n",
      "Epoch 33/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 33/100: 100%|██████████| 400/400 [00:31<00:00, 12.76it/s, loss=0.00855]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0074\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 33/100: 100%|██████████| 163/163 [00:13<00:00, 11.95it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0532 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 34/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 34/100: 100%|██████████| 400/400 [00:37<00:00, 10.75it/s, loss=0.0108] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0075\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 34/100: 100%|██████████| 163/163 [00:12<00:00, 13.26it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0568 验证MSE: 0.0068 验证损失: 0.0068\n",
      "\n",
      "Epoch 35/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 35/100: 100%|██████████| 400/400 [00:38<00:00, 10.49it/s, loss=0.00637]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0075\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 35/100: 100%|██████████| 163/163 [00:12<00:00, 12.55it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0619 验证MSE: 0.0073 验证损失: 0.0073\n",
      "\n",
      "Epoch 36/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 36/100: 100%|██████████| 400/400 [00:36<00:00, 10.87it/s, loss=0.00817]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0074\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 36/100: 100%|██████████| 163/163 [00:12<00:00, 13.15it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0594 验证MSE: 0.0070 验证损失: 0.0070\n",
      "\n",
      "Epoch 37/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 37/100: 100%|██████████| 400/400 [00:43<00:00,  9.13it/s, loss=0.00651]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0074\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 37/100: 100%|██████████| 163/163 [00:12<00:00, 13.38it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0607 验证MSE: 0.0073 验证损失: 0.0073\n",
      "\n",
      "Epoch 38/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 38/100: 100%|██████████| 400/400 [00:34<00:00, 11.70it/s, loss=0.00373]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0073\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 38/100: 100%|██████████| 163/163 [00:10<00:00, 16.29it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0556 验证MSE: 0.0067 验证损失: 0.0067\n",
      "\n",
      "Epoch 39/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 39/100: 100%|██████████| 400/400 [00:31<00:00, 12.84it/s, loss=0.00419]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0073\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 39/100: 100%|██████████| 163/163 [00:10<00:00, 15.29it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0599 验证MSE: 0.0074 验证损失: 0.0074\n",
      "\n",
      "Epoch 40/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 40/100: 100%|██████████| 400/400 [00:31<00:00, 12.90it/s, loss=0.00535]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0071\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 40/100: 100%|██████████| 163/163 [00:10<00:00, 15.05it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0555 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 41/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 41/100: 100%|██████████| 400/400 [00:31<00:00, 12.59it/s, loss=0.0073] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0070\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 41/100: 100%|██████████| 163/163 [00:09<00:00, 16.33it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0556 验证MSE: 0.0068 验证损失: 0.0068\n",
      "\n",
      "Epoch 42/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 42/100: 100%|██████████| 400/400 [00:35<00:00, 11.32it/s, loss=0.00873]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0071\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 42/100: 100%|██████████| 163/163 [00:12<00:00, 12.90it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0573 验证MSE: 0.0068 验证损失: 0.0068\n",
      "\n",
      "Epoch 43/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 43/100: 100%|██████████| 400/400 [00:33<00:00, 11.88it/s, loss=0.00799]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0070\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 43/100: 100%|██████████| 163/163 [00:10<00:00, 15.21it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0562 验证MSE: 0.0067 验证损失: 0.0067\n",
      "\n",
      "Epoch 44/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 44/100: 100%|██████████| 400/400 [00:31<00:00, 12.77it/s, loss=0.00711]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0070\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 44/100: 100%|██████████| 163/163 [00:12<00:00, 13.39it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0571 验证MSE: 0.0068 验证损失: 0.0068\n",
      "\n",
      "Epoch 45/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 45/100: 100%|██████████| 400/400 [00:39<00:00, 10.19it/s, loss=0.00709]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0070\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 45/100: 100%|██████████| 163/163 [00:12<00:00, 13.56it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0568 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 46/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 46/100: 100%|██████████| 400/400 [00:33<00:00, 11.91it/s, loss=0.00734]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0069\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 46/100: 100%|██████████| 163/163 [00:11<00:00, 14.15it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0547 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 47/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 47/100: 100%|██████████| 400/400 [00:29<00:00, 13.69it/s, loss=0.00693]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0069\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 47/100: 100%|██████████| 163/163 [00:10<00:00, 14.86it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0568 验证MSE: 0.0069 验证损失: 0.0069\n",
      "\n",
      "Epoch 48/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 48/100: 100%|██████████| 400/400 [00:33<00:00, 11.92it/s, loss=0.00772]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0069\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 48/100: 100%|██████████| 163/163 [00:12<00:00, 13.16it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0548 验证MSE: 0.0067 验证损失: 0.0067\n",
      "\n",
      "Epoch 49/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 49/100: 100%|██████████| 400/400 [00:32<00:00, 12.20it/s, loss=0.0084] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0068\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 49/100: 100%|██████████| 163/163 [00:11<00:00, 14.30it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0548 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 50/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 50/100: 100%|██████████| 400/400 [00:34<00:00, 11.73it/s, loss=0.00705]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0068\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 50/100: 100%|██████████| 163/163 [00:11<00:00, 14.27it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0559 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 51/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 51/100: 100%|██████████| 400/400 [00:29<00:00, 13.63it/s, loss=0.00642]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0068\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 51/100: 100%|██████████| 163/163 [00:10<00:00, 16.10it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0583 验证MSE: 0.0067 验证损失: 0.0067\n",
      "\n",
      "Epoch 52/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 52/100: 100%|██████████| 400/400 [00:32<00:00, 12.37it/s, loss=0.00541]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0068\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 52/100: 100%|██████████| 163/163 [00:08<00:00, 19.18it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0554 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 53/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 53/100: 100%|██████████| 400/400 [00:32<00:00, 12.35it/s, loss=0.00552]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0068\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 53/100: 100%|██████████| 163/163 [00:11<00:00, 14.05it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0548 验证MSE: 0.0067 验证损失: 0.0067\n",
      "\n",
      "Epoch 54/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 54/100: 100%|██████████| 400/400 [00:29<00:00, 13.38it/s, loss=0.00579]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0068\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 54/100: 100%|██████████| 163/163 [00:10<00:00, 14.89it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0545 验证MSE: 0.0065 验证损失: 0.0065\n",
      "\n",
      "Epoch 55/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 55/100: 100%|██████████| 400/400 [00:32<00:00, 12.45it/s, loss=0.00802]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0067\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 55/100: 100%|██████████| 163/163 [00:11<00:00, 14.70it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0543 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 56/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 56/100: 100%|██████████| 400/400 [00:35<00:00, 11.33it/s, loss=0.00781]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0067\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 56/100: 100%|██████████| 163/163 [00:12<00:00, 13.39it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0543 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 57/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 57/100: 100%|██████████| 400/400 [00:31<00:00, 12.76it/s, loss=0.0063] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0068\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 57/100: 100%|██████████| 163/163 [00:10<00:00, 14.91it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0560 验证MSE: 0.0067 验证损失: 0.0067\n",
      "\n",
      "Epoch 58/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 58/100: 100%|██████████| 400/400 [00:29<00:00, 13.53it/s, loss=0.0104] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0067\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 58/100: 100%|██████████| 163/163 [00:08<00:00, 20.09it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0531 验证MSE: 0.0065 验证损失: 0.0065\n",
      "\n",
      "Epoch 59/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 59/100: 100%|██████████| 400/400 [00:30<00:00, 13.14it/s, loss=0.00628]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0067\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 59/100: 100%|██████████| 163/163 [00:11<00:00, 13.91it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0544 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 60/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 60/100: 100%|██████████| 400/400 [00:30<00:00, 13.04it/s, loss=0.00809]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0067\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 60/100: 100%|██████████| 163/163 [00:11<00:00, 14.32it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0557 验证MSE: 0.0067 验证损失: 0.0067\n",
      "\n",
      "Epoch 61/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 61/100: 100%|██████████| 400/400 [00:33<00:00, 12.02it/s, loss=0.00638]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0067\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 61/100: 100%|██████████| 163/163 [00:09<00:00, 17.94it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0544 验证MSE: 0.0065 验证损失: 0.0065\n",
      "\n",
      "Epoch 62/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 62/100: 100%|██████████| 400/400 [00:35<00:00, 11.29it/s, loss=0.00453]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0067\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 62/100: 100%|██████████| 163/163 [00:12<00:00, 13.57it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0546 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 63/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 63/100: 100%|██████████| 400/400 [00:32<00:00, 12.13it/s, loss=0.0051] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0067\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 63/100: 100%|██████████| 163/163 [00:11<00:00, 14.38it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0543 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 64/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 64/100: 100%|██████████| 400/400 [00:32<00:00, 12.28it/s, loss=0.00968]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0067\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 64/100: 100%|██████████| 163/163 [00:10<00:00, 15.04it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0540 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 65/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 65/100: 100%|██████████| 400/400 [00:33<00:00, 11.78it/s, loss=0.00826]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0067\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 65/100: 100%|██████████| 163/163 [00:11<00:00, 14.65it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0549 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 66/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 66/100: 100%|██████████| 400/400 [00:44<00:00,  9.06it/s, loss=0.00423]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0067\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 66/100: 100%|██████████| 163/163 [00:13<00:00, 11.98it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0547 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 67/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 67/100: 100%|██████████| 400/400 [00:33<00:00, 12.10it/s, loss=0.00738]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0066\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 67/100: 100%|██████████| 163/163 [00:07<00:00, 21.47it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0547 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 68/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 68/100: 100%|██████████| 400/400 [00:24<00:00, 16.52it/s, loss=0.00793]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0066\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 68/100: 100%|██████████| 163/163 [00:08<00:00, 18.45it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0556 验证MSE: 0.0067 验证损失: 0.0067\n",
      "\n",
      "Epoch 69/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 69/100: 100%|██████████| 400/400 [00:28<00:00, 14.12it/s, loss=0.00417]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0067\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 69/100: 100%|██████████| 163/163 [00:08<00:00, 20.08it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0548 验证MSE: 0.0067 验证损失: 0.0067\n",
      "\n",
      "Epoch 70/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 70/100: 100%|██████████| 400/400 [00:26<00:00, 15.31it/s, loss=0.00767]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0066\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 70/100: 100%|██████████| 163/163 [00:09<00:00, 18.01it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0553 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 71/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 71/100: 100%|██████████| 400/400 [00:24<00:00, 16.59it/s, loss=0.00776]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0066\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 71/100: 100%|██████████| 163/163 [00:09<00:00, 17.96it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0552 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 72/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 72/100: 100%|██████████| 400/400 [00:24<00:00, 16.34it/s, loss=0.00662]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0066\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 72/100: 100%|██████████| 163/163 [00:09<00:00, 17.65it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0551 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 73/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 73/100: 100%|██████████| 400/400 [00:25<00:00, 15.70it/s, loss=0.00596]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0066\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 73/100: 100%|██████████| 163/163 [00:08<00:00, 18.56it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0547 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 74/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 74/100: 100%|██████████| 400/400 [00:26<00:00, 15.14it/s, loss=0.00502]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0066\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 74/100: 100%|██████████| 163/163 [00:07<00:00, 20.72it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0548 验证MSE: 0.0067 验证损失: 0.0067\n",
      "\n",
      "Epoch 75/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 75/100: 100%|██████████| 400/400 [00:24<00:00, 16.07it/s, loss=0.00705]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0066\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 75/100: 100%|██████████| 163/163 [00:07<00:00, 22.63it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0553 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 76/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 76/100: 100%|██████████| 400/400 [00:27<00:00, 14.52it/s, loss=0.00772]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0066\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 76/100: 100%|██████████| 163/163 [00:10<00:00, 16.26it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0547 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 77/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 77/100: 100%|██████████| 400/400 [00:35<00:00, 11.33it/s, loss=0.00678]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0066\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 77/100: 100%|██████████| 163/163 [00:11<00:00, 13.86it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0551 验证MSE: 0.0066 验证损失: 0.0066\n",
      "\n",
      "Epoch 78/100\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Training Epoch 78/100: 100%|██████████| 400/400 [00:41<00:00,  9.75it/s, loss=0.00688]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练损失: 0.0066\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Validation Epoch 78/100: 100%|██████████| 163/163 [00:14<00:00, 11.35it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证MAE: 0.0546 验证MSE: 0.0066 验证损失: 0.0066\n",
      "Early stopping at epoch 77\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "import torch.nn.functional as F\n",
    "# 初始化模型\n",
    "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
    "model = EnhancedTactileCNN().to(device)\n",
    "\n",
    "# 损失函数与优化器\n",
    "criterion = nn.SmoothL1Loss(beta=0.5)  # 对回归任务更鲁棒\n",
    "optimizer = torch.optim.AdamW(model.parameters(), \n",
    "                             lr=1e-3, \n",
    "                             weight_decay=1e-4)\n",
    "\n",
    "# 学习率调度器\n",
    "scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(\n",
    "    optimizer, \n",
    "    mode='min', \n",
    "    factor=0.5, \n",
    "    patience=5\n",
    ")\n",
    "\n",
    "# 早停机制\n",
    "best_loss = float('inf')\n",
    "patience = 20\n",
    "counter = 0\n",
    "train_loss_list = []\n",
    "train_mae_list = []\n",
    "val_loss_list = []\n",
    "val_mae_list = []\n",
    "# 训练循环示例\n",
    "import tqdm\n",
    "epochs = 100\n",
    "for epoch in range(epochs):\n",
    "    print(f\"\\nEpoch {epoch+1}/{epochs}\")\n",
    "    model.train()\n",
    "    train_loss = 0\n",
    "    mae = 0\n",
    "    pbar = tqdm.tqdm(train_loader, desc=\"Training\")\n",
    "    for inputs, targets in pbar:\n",
    "        pbar.set_description(f\"Training Epoch {epoch+1}/{epochs}\")\n",
    "\n",
    "        inputs, targets = inputs.to(device), targets.to(device)\n",
    "        \n",
    "        optimizer.zero_grad()\n",
    "        outputs = model(inputs).squeeze()\n",
    "        loss = criterion(outputs, targets)\n",
    "        loss.backward()\n",
    "        pbar.set_postfix(loss=loss.item())\n",
    "        \n",
    "        # 梯度裁剪\n",
    "        nn.utils.clip_grad_norm_(model.parameters(), 1.0)\n",
    "        optimizer.step()\n",
    "        \n",
    "        train_loss += loss.item()\n",
    "        with torch.no_grad():\n",
    "            mae += F.l1_loss(outputs, targets).item()\n",
    "    print(f\"训练损失: {train_loss/len(train_loader):.4f}\")\n",
    "    train_loss_list.append(train_loss/len(train_loader))\n",
    "    train_mae_list.append(mae/len(train_loader))\n",
    "    \n",
    "    # 验证阶段\n",
    "    model.eval()\n",
    "    val_loss = 0\n",
    "    mae = 0\n",
    "    mse = 0\n",
    "    with torch.no_grad():\n",
    "        pbar = tqdm.tqdm(val_loader, desc=\"Validation\")\n",
    "        for inputs, targets in pbar:\n",
    "            pbar.set_description(f\"Validation Epoch {epoch+1}/{epochs}\")\n",
    "            inputs, targets = inputs.to(device), targets.to(device)\n",
    "            outputs = model(inputs).squeeze()\n",
    "            val_loss += criterion(outputs, targets).item()\n",
    "            mae += F.l1_loss(outputs, targets).item()\n",
    "            mse += F.mse_loss(outputs, targets).item()\n",
    "    print(f\"验证MAE: {mae/len(val_loader):.4f} 验证MSE: {mse/len(val_loader):.4f} 验证损失: {val_loss/len(val_loader):.4f}\")\n",
    "    val_loss_list.append(val_loss/len(val_loader))\n",
    "    val_mae_list.append(mae/len(val_loader))\n",
    "    \n",
    "    # 学习率调整\n",
    "    scheduler.step(val_loss)\n",
    "    \n",
    "    # 早停判断\n",
    "    if val_loss < best_loss:\n",
    "        best_loss = val_loss\n",
    "        counter = 0\n",
    "        torch.save(model.state_dict(), 'best_model.pth')\n",
    "    else:\n",
    "        counter += 1\n",
    "        if counter >= patience:\n",
    "            print(f\"Early stopping at epoch {epoch}\")\n",
    "            break\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "c225b138",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x25e981ebdf0>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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7CA5OZlRo0YxZswYm8Bw/fr1BAcHs379ev755x8GDhxIixYteOyxx0rsy8iRI+nQoQMffvghrq6uLFy4kO7duxf6fQ5w9OhRtmzZwvLly1FVlXHjxnHs2DFq16593T+zW82hg6YCyjU/0KqqFiorq3feeYfFixezYcMGnJ2di603ceJExo8fb/2clpZGaGhoubShODI9J4SoEvIy4c0Q+9z7xdNgLN1oxYgRI3j33XfZsGEDnTp1ArQpp379+lkfLHruuees9Z966ilWrVrFd999V6qgae3atcTGxnL8+HFq1KgBwJtvvlloHdJLL71kfR8WFsazzz7L0qVLef7553FxccHd3R2DwUBQUFCx9/r666/Jyspi0aJF1tGamTNn0rt3b95++21rcOPj48PMmTPR6/U0aNCAXr16sW7duusGTS1atKBOnTp8//33DBkyhIULF/L+++9z7NixQnXnz59Pjx498PHxAaB79+7Mnz+f119/3abehAkTbPoO8PPPP9OxY8cS21KeHHp6zt/fH71eX2hUKTk5ucho9Ua99957vPnmm6xZs4ZmzZqVWNdkMuHp6WlzVLSCheAyPSeEEPbXoEED2rZta512Onr0KJs2bWLEiBEAmM1m3njjDZo1a4afnx/u7u6sWbOm2AeXrhUbG0vNmjWtARNAVFRUoXrff/89d999N0FBQbi7uzN58uRS3+PqezVv3txmeqtdu3ZYLBYOHz5sLWvcuDF6vd76OTg4mOTk5FLdY8SIESxYsICNGzeSnp5Oz549C9Uxm8188cUXDB482Fo2ePBgvvjiC8xms03d//73v8TExNgcpQlGy5NDjzQZjUYiIiKIjo7mX//6l7U8OjqaPn363NS13333XV5//XVWr15NZGTkzTa1QhRMz529lFOuo2tCCOFQnFy1ER973fsGjBw5kjFjxvDJJ5+wYMECatWqRefOnQGYPn06H3zwATNmzKBp06a4ubkxbtw4cnNLl6BYVQvv/nDt//e3bt3KQw89xCuvvEK3bt3w8vJiyZIlTJ8+/Yb6UdLvlKvLnZycCp2zWCyluscjjzzC888/z9SpUxk6dCgGQ+GQY/Xq1Zw6dYqBAwfalJvNZtasWWMzyubv70/dunVLde+K4tBBE8D48eMZMmQIkZGRREVFMWfOHBISEhg9ejSgTZudOnWKRYsWWb8TExMD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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplot(2,1,1)\n",
    "plt.plot(train_loss_list, label='Train Loss')\n",
    "plt.plot(val_loss_list, label='Validation Loss')\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Loss')\n",
    "plt.title('Loss Curves')\n",
    "plt.legend()\n",
    "plt.subplot(2,1,2)\n",
    "plt.plot(train_mae_list, label='Train MAE')\n",
    "plt.plot(val_mae_list, label='Validation MAE')\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('MAE')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "49b58129",
   "metadata": {},
   "source": [
    "## 模拟实际抓取性能\n",
    "### 导出均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "b18c583a",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'balanced_tacdata' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[48], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m mean \u001b[38;5;241m=\u001b[39m \u001b[43mbalanced_tacdata\u001b[49m\u001b[38;5;241m.\u001b[39mmean(axis\u001b[38;5;241m=\u001b[39m(\u001b[38;5;241m0\u001b[39m,\u001b[38;5;241m1\u001b[39m))  \u001b[38;5;66;03m# 按通道计算均值\u001b[39;00m\n\u001b[0;32m      2\u001b[0m std \u001b[38;5;241m=\u001b[39m balanced_tacdata\u001b[38;5;241m.\u001b[39mstd(axis\u001b[38;5;241m=\u001b[39m(\u001b[38;5;241m0\u001b[39m,\u001b[38;5;241m1\u001b[39m))\n\u001b[0;32m      4\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m均值: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmean\u001b[38;5;241m.\u001b[39mshape\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n",
      "\u001b[1;31mNameError\u001b[0m: name 'balanced_tacdata' is not defined"
     ]
    }
   ],
   "source": [
    "mean = balanced_tacdata.mean(axis=(0,1))  # 按通道计算均值\n",
    "std = balanced_tacdata.std(axis=(0,1))\n",
    "\n",
    "print(f\"均值: {mean.shape}\")\n",
    "print(f\"标准差: {std.shape}\")\n",
    "np.save(\"mean.npy\", mean)\n",
    "np.save(\"std.npy\", std)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "2d1da43b",
   "metadata": {},
   "outputs": [],
   "source": [
    "np.save(\"mean.npy\", mean)\n",
    "np.save(\"std.npy\", std)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3d440726",
   "metadata": {},
   "source": [
    "### 可视化结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "3fdea67e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABdIAAAXRCAYAAACaYm8JAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXhU5f3+8ftMJrNkJ5CVHURQNhFcsOKGS7Fate5aRau29mtbl2otarVq/WlbW23rVlusW7XVota1dWkB1yoCboiKImBISICQfZ05vz+emUwCyZAJSc4s79d1zTVLzmQ+Ccwnc+7znOexbNu2BQAAAAAAAAAAuuVyugAAAAAAAAAAAOIZQToAAAAAAAAAAFEQpAMAAAAAAAAAEAVBOgAAAAAAAAAAURCkAwAAAAAAAAAQBUE6AAAAAAAAAABREKQDAAAAAAAAABAFQToAAAAAAAAAAFEQpAMAAAAAAAAAEAVBOgAAAAAAAAAAUcQcpC9dulTHHnusSktLZVmWnnrqqajbL168WJZl7XBZvXp1X2sGgB7RowDEM3oUgHhGjwIQz+hRAJzmjvUJDQ0Nmj59us4991ydeOKJvX7eJ598opycnI77BQUFsb40AOwUPQpAPKNHAYhn9CgA8YweBcBpMQfp8+bN07x582J+ocLCQuXl5cX8PACIBT0KQDyjRwGIZ/QoAPGMHgXAaTEH6X01Y8YMNTc3a88999Q111yjQw89tMdtW1pa1NLS0nE/GAxq69atGjp0qCzLGoxyAQwy27ZVV1en0tJSuVyDv3wDPQpANPQoAPGMHgUgntGjAMSzWHrUgAfpJSUluvfeezVz5ky1tLTooYce0ty5c7V48WIddNBB3T7n5ptv1vXXXz/QpQGIQxs2bNCIESMG7fXoUQBiQY8CEM/oUQDiGT0KQDzrTY+ybNu2+/oClmXpySef1PHHHx/T84499lhZlqWnn366269vfwSwpqZGo0aN0rp167rMawUgedTW1mr06NHatm2bcnNz++V70qMA9Bd6FIB4Ro8CEM/oUQDiWSw9atCmduls//3318MPP9zj171er7xe7w6P5+Xl0biAJBU+fSYeTpejRwHYHj0KQDyjRwGIZ/QoAPEslh41+JNTSVqxYoVKSkqceGkA2Cl6FIB4Ro8CEM/oUQDiGT0KwK6IeUR6fX291qxZ03F/7dq1WrlypfLz8zVq1CgtWLBAZWVlevDBByVJt99+u8aMGaPJkyertbVVDz/8sBYtWqRFixb1308BACH0KADxjB4FIJ7RowDEM3oUAKfFHKQvW7asywrHl112mSRp/vz5uv/++1VeXq7169d3fL21tVWXX365ysrK5Pf7NXnyZD333HM6+uij+6F8AOiKHgUgntGjAMQzehSAeEaPAuC0XVpsdLDU1tYqNzdXNTU1zEkFJKlEfp8ncu0AeieR3+eJXDuA3knk93ki1w6gdxL5fZ7ItQPonVje547MkQ4AAAAAAAAAQKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACCKmIP0pUuX6thjj1Vpaaksy9JTTz210+csWbJEM2fOlM/n07hx43TPPff0pVYA2Cl6FIB4Ro8CEM/oUQDiGT0KgNNiDtIbGho0ffp03XHHHb3afu3atTr66KM1Z84crVixQldddZV+9KMfadGiRTEXCwA7Q48CEM/oUQDiGT0KQDyjRwFwmjvWJ8ybN0/z5s3r9fb33HOPRo0apdtvv12StMcee2jZsmW69dZbdeKJJ8b68gAQFT0KQDyjRwGIZ/QoAPGMHgXAaTEH6bF68803deSRR3Z57KijjtLChQvV1tam9PT0HZ7T0tKilpaWjvu1tbWSpGAwqGAwGPX1nn9e+uc/rX6ovHeOOsrWt741aC8HJK2dvbcHSrL1KI9HuvZaWwUFA/YSQEqiRzknN1f6xS9seTxOVwLEL3pU/5oyxdYPfzjgLwOkDHpUdFlZUkGB2YfLy5P8fsnnkzIzzf0hQ6TsbMm2pWBQamyUVq+WPvpI+vRTS83N5mu23fNr7LWXre9/P+bSgJQQS48a8CC9oqJCRUVFXR4rKipSe3u7Nm/erJKSkh2ec/PNN+v666/f4fGqqio1NzdHfb2MDLemTh3wH0uS9Mknbj31lEsHHlg7KK8HJLO6ujpHXjeZelQgYOmFF7x6660G7bdf24C8BpCq6FHO2LzZpbfe8mjNmloNG+bMTjiQCFKuRwWDSm9tkCsYkG1Zsl1pClppksulgNsbeYJty7KDsuygXIE2pbW1KK29Ra5gu2Tbqs8fucNrfPaZW6+9lqZTT63p5W8BwM6kXI+KUW2tS1VVLn38sUv19Zaamiz1JtcrLg5qwoR2ZWXZsizJ5eo+SS8rS9Mzz6Tr6KO3ye+PuTwg6cXSowZlT8myuh6Rs0OHybZ/PGzBggW67LLLOu7X1tZq5MiRKigoUE5OTtTXKiyUDjlk1+rtrTfekG65xZLL5dOwYYPzmkCy8vl8jr12MvWo//3PUnOzR4WFA/caQCqiRzlj9Wpp+XJLWVnD6GtAFKnUow695kDprbdkdTP00s7Pl11VFant8MNl/fe/3X4v2++XXV+/w+NPPin97W+WCgu93TwLQF+kUo865KuHpYoKKfz9O7+O368uw8L/+U9p40ZpiMxlN0nt7VJjo4LtQdVetEDbtknV1dKw23+m3I/eVFpjrdzN9fK42uX6tF1aHJQyM2UvXy55u+9b5eXS975nqaKiUPvtF/VHAFJSLD1qwIP04uJiVVRUdHmssrJSbrdbQ4cO7fY5Xq9X3m4agMvlkssV8/qoA2baNNMTP/rI0qGHOl0NkNicem8nW48qLZU2bbIUR60SSAr0KGdkZJjPWi0t9DUgmpTqUS5Xj/MXWC6XrM7fo7shnS6X5HbL8nq7bhuSkSG1tJiQrYecDUCMUqpH3Xmn9Pbb3X8tP1+66KLI/T/8QerhYJ/L51P+z65Wfn7ogW3vSyu631ZutyyfLxLav/yytN9+Zj4YScOHm/3ElSstzZ698x8BSDWx9KgBD9Jnz56tZ555pstjL774ombNmtXtfFSJJCdHGjNGev99EaQDCcqRHnX11dIXX5gRCV6v2aFzuaRAwNy/7bbIthddJC1fbkYmtLVFLoGAdPDB0q9+pc6nxJSUmBEHAJJDMn+O6o3w6cc7OZMagEMc6VGPPSalpZmAKD3dfCYKBLoPzZ96ynwtLU1yu82kw+5udoGDQYWP1vl8JqdvaxNrMwAJzpEe9Y1vSJMmRSYtD4fbtm0mQ+/s4IMVScpD0tLM5OiZmV2ff8kl0plnmt6XlWX6X5qZ0ip09M9st2yZqWH8eGnRImmPPSRJM2aY3UoAuybmIL2+vl5r1qzpuL927VqtXLlS+fn5GjVqlBYsWKCysjI9+OCDkqQLL7xQd9xxhy677DJdcMEFevPNN7Vw4UI9+uij/fdTOGjaNOmtt5yuAkBYQvSoF180H3C6k5/fNUj/+OOem0xDg3TXXV0eKikxi84AiE8J0aNuuskc7OtuxGdmphk9Ffbb30qffGJ25MKXYDASXP3+95FtGxtNMh7DEM/wWZYE6cDgSIgeVVra9X60MCwvL/r3qqmRrr9e+te/pJUrJY+nY2aElhaCdCDeJESPuvba3m973XW933bu3N5tFwiYgVYffyzNmWN2DouKNHOmWQy1vNzsMwLom5iD9GXLlunQTsOvw3NHzZ8/X/fff7/Ky8u1fv36jq+PHTtWzz//vC699FLdeeedKi0t1e9//3udeOKJ/VB+D555RqqqMkfmwjt1bre57/NJxxwT2fY//zGdpK1Nam2NXNrbzY7eFVdEtr3/fmnVKnME8KSTpD320NSp0tNPS5WVYu5OIA4kRI/6yU+ksjKpqcnspYWXX09Lk3Jzu257ww3S1q2RXubxmEtDgwmltpvLq6RE2rLFtDF2/oD4kxA96umno5+S3DlIf+YZafHi7rf1ersG6eeeK61YIZ1wgnT88eaU452cRhkekd7U1OvqAeyChOhR/cnvlx591Mxn/Pjj0plndjmAF5oVAUCcSLke1Rf77WeGnh9xhPTBB9IPfyg99pimTTOx2PLlZsA6gL6xbLuHCebiSG1trXJzc1VTU7PTxR0kmcYRbQdwy5bI/UMOkZYs6X5bn6/rntsxx0jPPRe5P3u2mn74E5366PG6+OLeHyAEsKOY3+dxxPHaW1ulBx+Udt9dq4YdpCuvNFPzjRo1+KUAycrx9/kuiLn2Bx6IzBG1/ehxn0+6+OLI/YcektaujYxCDwQiAxk8HjOVlWQeLy6WNm+OPHfvvc1nsO1Pc+7EtqXjjpP+7/+kr3+9lz8wkIJSqkf1t5tukq65xvSkZcu06mNLV15pTvobOXLwywGSkePv812QsLWvWCHts4/5DPbEE9IJJ+iqq8xHuVgGzQOpIJb3+YDPke6IAw+UCgrMTl0wGJlb2LZ3HFYwa5Y5HdDtNiOnPB5zPz19h5GeOv54aeJE6bPPzDkxb74p/7JTNOm8LXr//WyCdADOuOkmM3L9gANU/PRrkiyVlxOkA+ij+fN7v+1ZZ/Vuu7Q0M13Mv/4lPfmkGcm+fLn0y19KN97Y49Msyyz8x4h0AAPme9+TfvEL05Nee02+4XMkMaUUgAQ3Y4Y5E/rmm82IhEMO0d57D9Hf/27isRRYagcYEMkZpP/mN73f9tZbe7/t+edHbldUmBC+rEyHZL6jx98/rMs6EAAwaC680IRRb7yhISv+I693LguOAog/2dnSySeby5NPSt/6lvkcdsEFUY/8+XwEWgAG0LBhZsqpRx+Vli6V9xwTpLe0OFwXAOyqa681n7lWr5YWLtTe37pcDzxgpk+fNs3p4oDEFH1iSvSsuNgs3CBpWv0b2rzZZOsAMOhKSqTvfleSZN1wvUqKbYJ0APHt+OPN9HrNzdKvfhV10+1n2gOAfjdmjLnetIlFjgEkD59Puu8+aeFC6cc/1tixZg3m5cudLgxIXATpu+Kii6RFizTkShNgffaZw/UASF1XXmmmpnr1Ve3fvJggHUB8syzpttvMtC6//nXUTf1+Ai0AA6y42FxXVBCkA0gus2dL3/mOZFmyLDPjy7vvOl0UkLiSc2qXwXLggZKkTJnp1aurnS0HQAobPlw691zpj3/UrE//qsXWoTt/DgA4aa+9zGUnGJEOYMDtsYc0b540c6a8XvMQU7sASEZ77iktXmyWE3QxtBaIGW+bfpKbK9XUOF0FgJR22GGSpKLKD1VZadZZBoCEEAhIa9Z0+yW/nyAdwAA74gjp+eelK6+U2y253YxIB5BEVqwwa/5ddZWGDJFsW6qrc7ooIDERpO+qd9+VbrxR+237t7Ztc7oYAClt8mQpM1NpeVkKBqWqKqcLAoBeWLtWmjnTzJne0LDDl1lsFMBg83rpOwCSyObNZp70f/xDOTnmIfIroG8I0nfVokXStddqn7WPMSIdgLP23FOqrVXT0y9LEvOkA0gMJSXmtL6yMunWW3f4MkE6gEHT2CgFg/QdAMll6lRzvWaN8jyNkphRAegrgvRddcABkqTRG9+gEQFwlmVJLpeGDTOnJBOkA0gIPp/0q1+Z27/85Q7Ni6ldAAyKoiIpM1Nat04+H3OkA0giRUXS0KGSbSuv4mNJBOlAXxGk76r995ck5W9arbaKLQ4XAwBm0ZiiQpsgHUDiOOkkM71LU5P03HNdvsTIUACDIiPDXG/axNQuAJKLZXWMSvd9+oHcbqZ2AfqKIH1XDRsmTZwoSSr+8i2HiwGQ8h5/XNpjD12w7HsE6QASh2VJRx9tbi9e3OVLjEgHMCiKi811RQUH8AAkn1CQbn30ofLypNpaZ8sBEhVBen+YPVuSNH7TG3zgAuAsy5JWr9bIrSsJ0gEklkMOMddLlki23fEwgRaAQVFUZK5DQTpTuwBIKlOmmOsPPlBuLiPSgb4iSO8PoSB9wrZ3OKoHwFmTJ0uS8itWaVN5sHMWBQDxbf/9JY9H+uor6YsvOh72+6W2Nqm93cHaACQ/RqQDSGbhBUdra5Wby4h0oK8I0vtDqCGVNK7hqB4AZ+22m5SeLndzg/Jq12sLSzcASBQZGdI990ivviqNHNnxsM9nrhkdCmBAdQrSmSMdQNKZNcuk52++yYh0YBcQpPeHGTNU89bHuvCQT1j5GICz0tM71m0YVfcRIw0AJJZzz5UOPNCMTA8JB+nMkw5gQDEiHUAyS0+XsrMlSbm5IrsC+oggvT/4fMqaNUkBVzpH9QA4LzS9y6i6jwieACQ8v99cE2oBGFCTJknf+Ia0777MkQ4gqRGkA31HkN5P0tLMwT2CdACOCwfp9QTpABLQk09KF10krVsniRHpAAbJIYdIzz4rXXUVU7sASE7PPisdeqhmPX6l6utZfwboC4L0/vLKK/rRu/M14onfO10JgFS3114KTp2mKv9oNTY6XQwAxOg3v5Huukt65RVJjEgHMPiY2gVAUqqrkxYv1tDVr0liwVGgLwjS+8vnn2v/Tx9U0cp/OV0JgFR37LGy3ntPf514AyM4ASSeQw4x10uWSIqMSCfUAjAoGhrkSw8wtQuA5DNliiQp44sPJdtmehegDwjS+8uee0qShpSvcrgQAJAsy4ziJEgHkHAOPthcL14s2XbHiHT6GYABN2KElJWl/K1r1N7OtAcAkszEiZLbrbT6WhU0rSdIB/qAIL2/7LGHJGlIzTqpvt7hYgBAyvAG1FpD8gQgwRxwgOR2S+vXS19+Ka/XHBxkRDqAAZeZaa7qN0liwVEAScbjMQsrSxpd9yFr/AF9QJDeX4YOVVNukbm9erWztQDAggW699EsjX2GdRsAJJjMTGnffc3txYtlWZLXy4h0AIOgyOzPZdZVSOIAHoAkNHGiJGlkyxpGpAN9QJDejxpHm+ld7I+Y3gWAw1wueQLN8lZucLoSAIhdeHqX0Dzpfj+BFoBBUFwsSfLXEqQDSFLjx0uSRrV/TpAO9AFBej9q3c0E6a3vEaQDcFhJiSTJV13ucCEA0AfhBUfXrpVkFhwl0AIw4EJBuq/aBOlM7QIg6YwfL5WWyuX3EaQDfUCQ3p/23FMBudRWvsXpSgCkulCQ7q8hSAeQgA46SFq3rsuI9MZGh2sCkPxCU7t4tjFHOoAkdcEFUlmZXvvmrwjSgT4gSO9H9tnzdcq8en159Z+cLgVAqgsF6Zm1BOkAEpDPJ40a1eUuI9IBDLjQiPT0LUztAiBJWZYkKSdHLDYK9AFBej/KLc1Ua5qfZgTAeaWlkqTs+nLJth0uBgB2gW0zRzqAwTFxovSNb0j77S+JvgMgeeXlSbW1TlcBJB6C9H6UkSG53eL0GADOC4+oCrRI1dUOFwMAfbBunXTssdLee8vnk5qanC4IQNI78EDp2WdlXfszSQTpAJLUOefolCtGq+SzpU5XAiQcgvR+ZFnSqRtu1T6XHSg99ZTT5QBIZT6fKqYermUjjpdaW52uBgBiN3So9MIL0sqVKmhcR6AFYNCkp5t9O+ZIB5CUNm1Sxub1Grr1M3YVgRgRpPezCXXvqvDT16W1a50uBUCKe+eml3Tzvk92jE4HgISSlSXts48kaeyGpYxIBzBorIZ6ZXjaOYAHIDmNGydJKm78nOldgBgRpPeztrwCc6OqytlCAKQ8v98MRg8EnK4EAPpo1ixJUkHlRwRaAAbHmDFSdrbGtqym7wBITuPHS5JKGj5njT8gRgTp/SyQT5AOID5kZEiybTXVcL4egAQ1YYIkacjmzxiRDmBw+HySpHxtZWoXAMkpFKQXN37OGn9AjAjS+1tBKEivrHS2DgApb8yjN2vRC365FvzE6VIAoG92202SlF25hpGhAAZHTo4kKduupe8ASE7hEekE6UDMCNL7mauIEekA4kNadoY8wRbZZeVOlwIAfRMK0rPK16il2VYw6HA9AJJfOEgXQTqAJBWaIz2rbZsav9rqcDFAYnE7XUCy8QwvlCTZVVWyHK4FQGpzDS+RJFkVGx2uBAD6aMwYqbRU9cPGyd9ep5aWHPn9ThcFIKmFg/Rgrb4iSAeQjDIypBkztGZjhpo31UjKd7oiIGEQpPcz78gCBaw0yXYpzeliAKQ096hSSVLaJkakA0hQHo9UVqZP35GabpCamkSQDmBg5eZKkjIDtcyRDiB5LV+uP14hDU93uhAgsTC1Sz/zTZuoE45u1boXP3G6FAApzjPajEh3by6XbNvhagCg78LhOdMsABhwoRHpme019BwASS03V8yRDsSIIL2f5Q2xZFsubdvmdCUAUp1vrAnS05obpdpah6sBgL7z+STZNqEWgIE3fbr0zW+qrnQiPQdAUsvNlWq2MeAKiAVBej8LDWDgqB4Ax6VlZ6gh3ZyerHKmdwGQoP7xD405bKwuX3GGmpqcLgZA0vvOd6R//lPrDj6bIB1A8nrlFZ17w1hd8PfDna4ESCgE6f3M45G+++nlmvqDg6U333S6HAAp7v3SefpqnxMkF+0eQILyeuXe8KVG1H9CqAVg0Hi9Yo50AMkrK0tZm79UYTXTEgOxIFkZABPqlmvYqqXS2rVOlwIgxf3lyEf18v89Ie2+u9OlAEDf7LabJKmkcY2aGjn9GMDg8Ke3c/AOQPIaP16SNLS5TM3VnPIH9BZB+gBoySkwN6qqnC0EQMrz+8VUCAAS29ixsi1LGe11ClTw2QrAAHvxRcnr1eE/m02QDiB5DR2qQJaZm7h6OYNAgd4iSB8AbXkE6QDiQ0aGzAhO9gQBJCqfT9bIkZKktLVrHC4GQNLz+6XWVqU316q1VbI5EQZAMrIsWaFR6Rtf/dzhYoDEQZA+AIJDCdIBxIcDVv1ZP7rSZxbOAoBENWGCJCl9HUE6gAGWaxZqdzfWSmKedADJyzXBBOnVywjSgd4iSB8IBaEgvbLS2ToAICtL7kCrtHGj05UAQN+F5kn3lRGkAxhgOWaqg3CQzkl9AJLWqFGSpOY1XykYdLgWIEEQpA8AV3GhJMlmRDoAh7UNKzE3ysudLQQAdsVee+mL4tmqyyh2uhIAyS4UpKc1N8oVZMFRAElszz3VuNcB2pg2Up8zKB3oFbfTBSQjz/ACtVtuWUEpzeliAKS0YFEoSGdEOoBEduGFuvvzCzVihHSg07UASG7Z2R03/e11am4e4mAxADCAzjtPnvnn6aXTpfz3OmbSAxAFI9IHwpw5OuHoVlUues3pSgCkOLs4FKTX10t1dc4WAwC7wOdjigUAgyA93Sw4KimjvZY50gEkNbdbmjpVWrnS6UqAxECQPgDy8l2SZammxulKAKS69PxsNbmzzB2mdwGQwPx+qaW+TWpvd7oUAMnuqKPUcuSxsi0XB/AAJL3p02ytWiW1tjpdCRD/CNIHQGihd4J0AI7z+6WtXuZJB5D4zl54kK6+yS8tW+Z0KQCS3ZNPqvmxp7XZP5IgHUDyamiQRo7UN0/xympu0qpVThcExD+C9AGQnS398P3zNeH8g6RPPnG6HAApLCNDWjnsCAWO+5aUleV0OQDQZ1ZamtLsgLRmjdOlAEgBXq+5ZmoXAEkrI0PaskVWW5vGeMv13ntOFwTEP4L0AeBySXvWvKn8D1+VvvrK6XIApDC/X7pn6p2quW+RNHOm0+UAQJ/Vl+xmbhCkAxgEXq8k22ZEOoDkZVlSaakkaZ/hG7VihcP1AAmAIH2ANGUWmBtVVc4WAiClhdbKUmOjs3UAwK5qGj7B3CBIBzDQ5s+XleHXNzb+iSAdQHIrMdOATs4v1xdfSLW1DtcDxDmC9AHSnFNobhCkA3BQOEhvarRJ0wEktJaRoRHpn33mbCEAkp9tS83NylEtQTqA5BYK0sd4y2Xb0qefOlwPEOcI0gdI+xBGpANwXkaGdODGxzR+slc64QSnywGAPmsbY4J0mxHpAAZaTo4kKcuuZY50AMktFKRn1myUZUnV1Q7XA8Q5gvQBEhwaCtIrK50tBEBK8/ulBneuXO1tUkWF0+UAQJ/ZY8dLkqytW6WtWx2uBkBSCwfpQUakA0hyoSDdtalc2dkE6cDOuJ0uIFlZhYxIB+A8v1+q9hWbOwTpABKYZ0imlhXM07RDhshDsgVgIIWD9ABBOoAkN2mS9LWvSRMmKHejVFPjdEFAfCNIHyCu4kK1W26lBYKynC4GQMpKT5dq/aEgvapKam+X3LR+AInH75eu3u95/en3UnGx09UASGqhID2jvYYgHUByO/54c5E05Gpp2zYniwHiH1O7DJCWb3xLJxzdqtoHnnS6FAApzLKk9rxhsi2XWTiLs2QAJKjw4smEWgAGXDhIb2OOdACpIy+PIB3YGYL0AZKbnyZZFqfFAHCcLzNNTTmF5g7TuwBIUD6fuW6qa5c2b3a2GADJbeRI6aCDtLl0GkE6gNQQDCo3x2aOdGAnCNIHSG6uueZoHgCn+f1SYw7zpANIbH6/NHPT85q4d4Z03HFOlwMgmR18sLRkid448TcE6QCSm21Lu+0meb0qbV/PYFBgJwjSB0henvTj5WdqzBkHSOXlTpcDIIVlZEjrxs+VTjzRNCcASEA+n1TtK5GrvU367DOnywGQArxeEaQDSG6WZdbRam9XYftG1dVJgYDTRQHxiyB9gPh80uTqV5Xz0ZvS+vVOlwMghfn90otH3ir94x/S7NlOlwMAfeLzSeUZ482dqioxZArAQCNIB5ASSkokSfkt5bJtPmIB0RCkDxDLkmqyRpg7X33lbDEAUprfLzU2Ol0FAOwat1tq8+eoJS+05sPnnztbEIDktXWrVFSks7+fodbmoNPVAMDACgXp2Q1mNgWmKAZ6RpA+gOrzCNIBOM/vl5qaZOa/a2hwuhwA6DO/X6ormmDurFnjbDEAkldmplRZKXdrk6z6OqerAYCBFQrSs2pNkM6IdKBnBOkDqGkoQToA52VkSLutetqcnzxvntPlAECf+XxSTcFu5g5BOoCB4vVKHo8kKa2h1uFiAGCAhYJ03zZGpAM7Q5A+gOwRoSC9rMzZQgCkNL9f2qY8qa1NqqhwuhwA6DOfT6oeGponnaldAAyknBxJUnpTrWzb4VoAYCCFgvS0TeXKyCBIB6IhSB9AnnEmSLcZkQ7AQX6/tMkqNncI0gEkML9fKivZRzrjDOmAA5wuB0AyCwXp/vZaFhwFkNwmTJAOPFCaOlW5uVJ1tdMFAfHL7XQBySxr4gi1Wemy2ySP08UASFl+v1Ruh4L0ujozT3pmprNFAUAf+HzSp8Vfl674utOlAEh2oSA9o80E6T6fw/UAwEA56CDp1VclSXk/YY50IBpGpA+gnCP314lHN+vje5Y6XQqAFJaRITW4smX7/eaBTZucLQgA+qhj8WQAGGjhIJ0R6QBSyJAhTO0CREOQPoAKi12y0lzauNHpSgCksqFDJVmW2ocxvQuAxObzSc3NktrbzWLu7e1OlwQgWe21lxpnzlFjei5BOoDUEAwqNztIkA5EQZA+gNxuqahIBOkAHDVhgmRZUn0WQTqAxOb3h4L0oUOlkSOltWudLglAsvrd71Tx2FKtKDjS9B0ASGb77CN5PBpX/S5BOhAFQfoAO+vjq3Tk9QdIL7/sdCkAUpTPJ40dK3024jDppJOkggKnSwKAPvH5QlO7FIcODJaVOVoPgOTm9ZprRqQDSAmBgIa1lWvbNsm2nS4GiE8E6QNsRP3HGrnhTemzz5wuBUAKmzRJ+sv4X0iPPy7NmeN0OQDQJx1Tu4wYYR4gSAcwgMILjBKkA0h6JSWSpCHN5QoGpfp6h+sB4hRB+kAL7ejZG75yuBAAqWzSJDOdcF2d05UAQN91LDY6fLh5gCAdwEC5+24N2bNY3/vgBwTpAJJfaakkKaehXBILjgI9IUgfYJ4xZkeveQ1BOgDnTJpkrj9dHSRNB5CwwiPS7dJQkP4Vn68ADJD2drkqNym3tYogHUDyC41Iz6gxi/xVVztZDBC/CNIHWOZEMyK9/Ut29AA4p7hY+lr9vzVjtleaO9fpcgCgT/x+KRCQgiWMSAcwwHJyJEkZ7bUE6QCSXyhI921lRDoQDUH6AMvewwTpVjk7egCcY1lSwe5D5Aq0SxUVTpcDAH3i95vr1gKCdAADLDdXkpQVqCFIB5D8QlO7uCrLlZ4u1dQ4XA8Qp9xOF5Ds0kabIN1b9ZVZ9tiyHK4IQKoq2qtYkmRXVMiiHwFIQOGF/xpHTZL/zDOlKVOcLQhA8gqPSA8wIh1AChg7VpozR9aUKcprZkQ60JM+jUi/6667NHbsWPl8Ps2cOVOvvvpqj9suXrxYlmXtcFm9enWfi04ow4crkJauen+B1NDgdDVASqBHdW/MvkWSJKutjUnvAAfRo/ouPCK9YdQe0sMPSz/9qbMFAUmIHhXC1C5AXKJHDZDJk6WlS6W77lJeHruLQE9iDtL//ve/65JLLtHVV1+tFStWaM6cOZo3b57Wr18f9XmffPKJysvLOy4TJkzoc9EJxe/XX+5q1k9PWStlZTldDZD06FE9222yV3XpQ8wdpncBHEGP2jXhEelNTc7WASQrelQnoSDd31ar5maHawEgiR41WPLyGJEO9CTmqV1++9vf6rzzztP5558vSbr99tv173//W3fffbduvvnmHp9XWFiovLy8Xr1GS0uLWjod9q+trZUkBYNBBYPBWEt2XHGpVPGcrbY2W2lpTlcDxKf+em/To3rm8UjbsoqVXV2tYFmZNGmS0yUBCYMeFR+8Xsm2LTU22gq2tJmDgkOGMFgBKY8eNQByc2XttZfKq7LV3BRQMMiUeEBf0aMSSCCgvCxbX36VrmDQdroaYFDE8t6OKUhvbW3Vu+++q59udxrtkUceqTfeeCPqc2fMmKHm5mbtueeeuuaaa3TooYf2uO3NN9+s66+/fofHq6qq1JyAwwF8PreamrK0alWtiopSoPECfVBXV7fL34MetXMtQ4ZK1VLtmjVqnjrV6XKAhEGPig91dZZaW3O1cWODJp9/pDzLl6v6vvvUMm+e06UBjqJHDZAXXtDtN2Vp6NYGVVY2Ol0NkLDoUYlhyGmnyfPaaxp93iN6q+4YVVbWOl0SMChi6VExBembN29WIBBQUVFRl8eLiopU0cM0ASUlJbr33ns1c+ZMtbS06KGHHtLcuXO1ePFiHXTQQd0+Z8GCBbrssss67tfW1mrkyJEqKChQTugUu0Syz4p79ft3HlDGA6eo8NaLnS4HiEu+8Pn6u4AetXNfHDBXrzUWa9/xE5VTWOh0OUDCoEfFh7w8yeOx5PN5lD5qlLR8uXIbGiT6GVIcPWrg5OdbSk+3VVjImS9AX9GjEoOVmSkrENCo9Bo1N/tVUOCTxck4SAGx9KiYp3aRJGu7d5Jt2zs8FjZx4kRNnDix4/7s2bO1YcMG3XrrrT02Lq/XK6/Xu8PjLpdLLlef1kd1VHZTlXK3vaX1H01OyPqBwdCf7w16VM8aLv+5frlNuneqVBLfpQJxhR4VH7xeKS1Nam21ZI0YIUlybdwoJfjPBewqetTA8fmk5maLNgPsAnpUgigtlSQNaapQW5ullhZLGRkO1wQMglje2zF1gWHDhiktLW2Ho32VlZU7HBWMZv/999dnn30Wy0snNNeI4eZ641cOVwIkN3rUzhUUmOuqKmfrAFIRPWrXWZbk98ss/DfcfL5SWZmjNQHJgh7VjX320Q9vKVV2+adOVwKkPHrUICgpkSRl1ZdLkmpqnCwGiE8xBekej0czZ87USy+91OXxl156SQcccECvv8+KFStUEnqDpoTQz5q+ZZPDhQDJjR61c8OGSZYd1Jay5J7fD4hH9Kj+4fNJTU0iSAf6GT2qG+Xlyqotl+rrna4ESHn0qEEQ+r1k1Jggfds2B2sB4lTMU7tcdtllOuusszRr1izNnj1b9957r9avX68LL7xQkplPqqysTA8++KAks4rymDFjNHnyZLW2turhhx/WokWLtGjRov79SeJZ6Oiov7b7ebsA9B96VHSehxbqqee/q7LK46R5TzhdDpBy6FG7zkyzIGkMQTrQ3+hR28nMlCRZjQ0OFwJAokcNuNDULt7NG6USqbra4XqAOBRzkH7qqadqy5YtuuGGG1ReXq4pU6bo+eef1+jRoyVJ5eXlWr9+fcf2ra2tuvzyy1VWVia/36/Jkyfrueee09FHH91/P0W8Ky6WJGU1VkqBgJncE8CAoEftREaGXHaQ4QWAQ+hRu87vD41ID82RTpAO9B961HbCkwM3NTpbBwBJ9KgBFxqR7qosl2s4u4xAdyzbtm2ni9iZ2tpa5ebmqqamJjFXSW5rk+31yrJttW7YJM+IQqcrAuJOIr/PE6r2f/1LmjdP5UV7qaRihdPVAAkjod7n20nk2ruzYIGZpurHFzZI3/uemeLlppskd8zjQ4Ckkcjv87iu/Wtfk954Q7fNWaRLl37L6WqAhBXX7/OdSOTaY1ZeLp12mjR6tL7jflAHHyzNn+90UcDAi+V9zh7HYEhPV1vhcFXXpklf1qiIIB2AU4YMkSR5GjhPD0Bi6hiRnpkpPfyw0+UASGahqV1czYxIB5ACSkqkJUvMzaulCmYnBnYQ02Kj6Lsty9fr/LlfqjxrgtOlAEhloSDd11yt+D8fCQB21DFHOgAMtNDULmnNjXxuApBSSkqkjRudrgKIPwTpg2RYgSVJqqpyuBAAqS0UpGe216q+JuBwMQAQuy5BelubtH69tHmzozUBSFLjxql+3FQ1ubPV2up0MQAwSAIBlQxrU0WFOIgIbIcgfZCkp0v5+VJlpdOVAEhpeXkdN7d8vs2xMgCgrzqmdpHMHOmjR0v33utoTQCS1G9/qw//+r6WDj9dLS1OFwMAg+DMMyWPR9M++KsaG6XaWqcLAuILQfpguf9+3fDS/hr9yM1OVwIglaWnq+2oY/RayUnaUhV0uhoAiFmXEemlpea6rMyxegAkN6/XXBOkA0gJXq8UDGpoi5nXhXnSga4I0gfL5s0aXf4/Za77yOlKAKQ49wvP6Lf7P66NbQVOlwIAMesyIn3ECHNNkA5ggBCkA0gpJSWSpJyGcklSebmTxQDxhyB9sBQXS5K8WzmcB8BZliUNG8aaDQASk9/faUT68OHm+quvHKsHQBL785+12zETNf/jKwnSAaSGUJDuripXbi5BOrA9gvTBEgrSM+srFGQ2BQAOKxwW1OaKdqfLAICY+XxmjdH2dkWCdEakAxgIdXXyrP1Uw5q+IkgHkBrC0+Zt3KiSEoJ0YHsE6YOlqEiSlNeySVu3OlwLgNT27W/rhlvSNf6/f3a6EgCImd9vrltaFAnSN20y6ToA9KeMDEmSL9AQORMGAJJZaES6yssJ0oFuEKQPltCI9NzWzaosY0cPgIPS0+WygwpuqXa6EgCImc9nrpuaJBUUSOnpkm2zGhaA/peZKUnyBhoZkQ4gNXQO0ottgnRgO26nC0gZQ4fKTkuTFQho26eV0vThTlcEIFUNGSJJSqutVnu75OYvAYAEEh6R3twsyeWSvv9986DH42hdAJJQaES6N9CoGoJ0AKmgpEQ66CCptFTDh7WopsanpqbI5y8g1RGfDBaXS9aYMaqsCKjmqzqnqwGQykJBemZrtbZs6Zh5CgASQpcR6ZL0u985VguAJNcRpDcwIh1AavB6pSVLJElFn5iHysulceMcrAmII0ztMpjWrNFN563VF55JTlcCIJWFgvSstmpVVTlcCwDEKJRrqbbW2ToApIDQ1C6+IFO7AEg9oRmKmT0P6IQgfZAVFkqVlU5XASClEaQDSGCFhVJOjvTxx6EH2tqk9evNBQD6U26uNGaMqjNHEKQDSC2BgHK8LcrIkDZudLoYIH4QpA8ygnQAjgsF6TlBgnQAiceypGnTpPffDz3wu99Jo0dLCxY4WheAJDRtmrR2rW77xitmXQYASAU//KHk8cj63e0qLmZEOtAZQfpgeughnXjr/jp4yQ2ybaeLAZCyRo6U5s7VVyMPIEgHkJCmTZM+/TS04Ojw0ALuZWWO1gQgeXm9YkQ6gNSRmSkFg1J5uUpLzRzpAAyC9MG0davyP/2fhm/7SMuXO10MgJQ1dar08staesodBOkAEtK0aVIgIH30kQjSAQw4gnQAKaWkxFyXl6u4mCAd6IwgfTCFVmoYnlah++83B/gAwCkFBUw1BSAxlZZK+fmh6V06B+mc8gegP7W2SrNm6acP7algTZ3T1QDA4CgtNddlZSotlTZvNkvSACBIH1zhIN1doS+/lJYscbYcAKmtqCCoTRU2uROAhGNZ0vTpoSA9vLPX1CRt2+ZkWQCSTXq6tHy5irZ8LLu+welqAGBw7LabuV61SsVFZn9x0yZnSwLiBUH6YAoF6d7qTTrgAOmhh8wgBwAYdCNH6psnpWvItrXassXpYgAgdtOmSZ9/LtUH/NLQoeZBpncB0J8sS8rIkCSCdACpY/JkcyCxulrD276UxPQuQBhB+mAqKjLXNTU6++QmbdkiPf+8syUBSFG2LSsYVFZbtTZudLoYAIjdtGlmJhfmSQcwoDIzJUl2Q6PDhQDAIPF4zLpakoasXa70dIJ0IIwgfTDl5pqVaiQNd2/SvvtKb7/tcE0AUtOQIZKk7HaCdACJqbDQjFF47z1JZ50lXXmlNHKk02UBSDahEelWIyPSAaSQ446Tzj5bVmmJiouligqnCwLig9vpAlKKZUnjxknNzVJ9vQoLpRUrnC4KQEoKBemlGQTpABLXtGmhedLvuNzpUgAkK0akA0hF117bcbPoJamy0sFagDjCiPTBtmqV9MUX0pQpys2VamqcLghASgoH6X6CdACJa/p0ad061hgFMIBCI9JdTYxIB5CaCgoI0oEwgnQH5eVJdXVSIOB0JQBSTihIL0qvZr47AAkrNH2nPlzRZhL1Dz90tiAAyWf4cDUMG6WW9jSnKwGAwdXeLn30kUqz61RV5XQxQHwgSHdKeblyc2zZtgnTAWBQhYL0oa5qVVSYBfsAINHk50sjRkibnnlbGjNG2ntv6dNPnS4LQDJ58km9/Od1envY0U5XAgCDa//9pSlTNP6rJaqvl5qanC4IcB5BuhNOOUUaMUIlX7wuidORAThg8mRp7lylTxyr1lZp82anCwKAvpk2TXqx/gDpqKOktjbpoos4OgigX3m9UksLrQVAipk8WZJUVLZckhiVDogg3RlZWVIwqGHPPSCJedIBOOD886WXX5bnB9+TJOZJB5Cwpk+XNpZb2nrDHSbtevll6fHHnS4LQBLxek2I3tbmdCUAMIj23luSlPsFQToQRpDuhPnzJUn+Zx+TJ9BEkA7AMYWFkstFkA4gcU2ZYq5X1u8mLVhg7lxyiVRb61hNAJLI7bdr1g/209Ff3qWWFqeLAYBBFArSPR8ul8tFkA5IBOnOmDNHGjNGVm2tDtz8FFO7AHCMO81WURFBOoDElZMjjR0rvf++pCuvlMaPl8rLpZ//3OnSACSDr75S9qq3VdS4liAdQGrZay9JkrVhg8ZkVqmy0tlygHhAkO4El0s6+2xJ0uEbH2BEOoDB9+67ZpW+iRNVWkqQDiCxTZtmgnTb65PuuMM8+Pvfh9J1ANgFmZmSJG+gkSAdQGrJzpZ2312SNC2wghHpgAjSnRMK0idvfEmt68odLgZAyvH7pepqafNmgnQACW/6dHO6cUWFpK9/XTr9dOmKK8zodADYFRkZkiRfoIEgHUDqCU3vsnv9coJ0QJLb6QJS1vjx0uzZcr35pka8+Ziki52uCEAqGTLEXG/bptLioF6ocCkYNCfMAECimTzZ9K/33pNKSiT99a+SZTldFoBkwIh0AKns1FOlPfZQrX24Ktc5XQzgPCITJ115pV4+9U96bcxZTlcCINWEg3Tb1ojcOrW3s3gMgMSVkSFNmiQtWxZ6gBAdQH8JjUj3MiIdQCo6/njp2muVtt8sbdkiBQJOFwQ4iyDdSccdp7J556u8Jd/pSgCkGp/PXCQNz6iWxPQuABLbPvuYEemtrZ0efOIJM9XLiy86VheABMeIdABQQYEUDJrZQYFURpDusLw8sdgoAGeERqXnW9VyuwnSASS2WbOk5mbpww87Pfjf/0r//rf08MOO1QUgwWVny87LU0taJkE6gNS0ebNGLXtC42uWq7LS6WIAZxGkOyw/vU5HfPx7BU49Q7Jtp8sBkEryzdkwadu2qKiIIB1AYhs9Who2rNP0LpJ0xhnm+sknpcZGR+oCkOCOPlraWq0b9n2WIB1AarrxRhVceKKOXP9npgNFyiNId1hudlDnfPwTpT32qDkfGQAGy+zZ0uGHSxkZKi0lSAeQ2CzLTO/yzjudxibsv780ZoxUXy89+6yT5QFIYJZlZsSrr3e6EgBwwCGHSJKmVS8hSEfKI0h3WPaIXC0r/Ia58+ijzhYDILX86U/SSy9JBxyg4cOlsjKnCwKAXbPPPlJFRad+ZlmRUemPPOJYXQAS35AhzA0MIEXNmSNJGlG7SnWfM7cLUhtBusNyc6XXSk42d156ydliAKSsUaNM+MQpywAS2bRpksdjRqV3CAfpzz9PCgYgdhUV0ty5uvLfh2rrVqeLAQAHDBsmTZkiScp8d6nDxQDOIkh3WE6O9OmQ/cydDz+UWludLQhA6rFtjRplpkL46iuniwGAvvN6palTt5snffJkk7C3tUmLFjlWG4AE9p//aNyGJareyppWAFJUaHqXotVLnK0DcBhBusPcbqmxcIxaM/PMDt5HHzldEoBU8eCDZsHR00/XqFHmofXrnS0JAHbVPvuYj1MNDZ0ePPNM6eCDpZISx+oCkKAyMiRJlm2rrqrZ4WIAwCEHHyxJGrN+SWQtGiAFEaTHgdw8S5tHzDB3VqxwthgAqSM93UxzUFkpv18qKCBIB5D49tlHCgSklSs7PXjFFdLixdI3vuFQVQASVihIl6SGqkYHCwEABx10kCRpdM0HatywxeFiAOcQpMeBvDxpY9EMye8XE+8BGDTDhpnrzZslmXnS161zsB4A6AeFhaafdZkn3bIcqwdAgnO7zeILkoL1jWpmUDqAVFRYqLLf/UPnHbZWVcGhTlcDOIYgPQ7k5kov7Pdzqa5Ouvxyp8sBkCoKCsx1VZUkgnQAyWOffcw86TucelxZKT3yiCM1AUhgoVHpvkADaxYDSFn+b5+oyowxqqx0uhLAOQTpcSA3V6pqzpbS0pwuBUAq6Twi3bY1erTJmBhpBSDRzZol1dRIn33W6cG6Omn0aDNf+iefOFYbgASUmSlJ8gYaOYEYQMoaMsScpBMahwWkJIL0OJCXZ3b2AGBQhYP09naptrZjwdENG5wrCQD6wx57mNyry/Qu2dnSYYeZ248+6khdABJUbq7snBylBdsYkQ4gZVmydVr5bZp6zXFMS4yURZAeB3JzTZBuX3+DNHmy9PjjTpcEIBX4fFJWlrldVaWRI81NFhwFkOjS0qS99zbTu3Rxxhnm+pFHupn3BQB68NFH0rYafVm0n7awxh6AVGVZOuyzP2rUyqel115zuhrAEQTpcSAvTwoEpLYN5dKqVd3s9QHAADn4YOmIIySZXL2oiHnSASSHffaR1qzZbsDUcceZoeqffSb94Q+O1QYg8ViWlJ8vRqQDSGkVEw82N5YscbYQwCEE6XEgN9dcN+y+t7mxfLlzxQBILc8+K734orTbbpLMgqOMSAeQDPbe2wRf777b6cGsLOmWW8ztyy9n8AKAmAwZwmwGAFJbw8yDzI2lS50tBHAIQXocyMsz11tGzzA3VqzgdGMAjhg9mhHpAJJDbq40aZL0+uvbfeGii6QTTpDa2qRTTzWLkAJANLfcIh15pPbb9DRBOoCUZh1sgnR7+XKpttbhaoDBR5AeB8Ij0isLpphJPbdskb76ytmiAKSW0MG7UaOkzZulxkaH6wGAfnDooeZEvy7Bl2VJCxdK48dLF1xgpnoBgGg++EB66SWVNn1OkA4gpeVPH6mKjLGygkHpjTecLgcYdATpcSAzU/J6pU01PmnPPc2DK1Y4WxSA1HDLLWbCz5/+VJIJ0iVpwwYHawKAfjJnjuR2S4sXb/eFIUOkDz80vc/Fx2EAO5GRIUnKTmskSAeQ0kpKpI/yQ9O7ME86UhB7DnHAsqQxY6QvvpA0IzS9y8qVDlYEIKVUV0uVlZKkkSNNT2KedADJICtL2n9/6eWXu5k1z+eL3G5slL78cjBLA5BIQkF6ltWghgaptdXhegDAIVlZ0prhByvg9jC1C1ISQXqcGD9e+vxzSbNmSZMnR+Z7AYCBNGyYud68WZLk8UjFxcyTDiB5zJ1rzrJZs6aHDdaskfbdV5o3T2poGNTaACSI0BRQmZaZ+6662sliAMBZa/c9VffcvE26806nSwEGHUF6nBg3zkyL3vLdH5pTjS++2OmSAKSCggJzHQrSJTO9CyPSASSLGTPMDFavvNLDBrm5JhVbvVq64opBrQ1AggiNSPfbJkhnehcAqWzYqAx9tcXvdBmAIwjS48S4ceaUY84qBjCowiPSq6o6HiopkSoqHKoHAPqZyyUddpiZxrOtrZsNCgqkBx4wt+++W/rXvwa1PgAJIBSke9vNWSsE6QBSWUmJtHFj6E57u6O1AIONID1OjB5tdvS++CL0QCAgtbQ4WhOAFLDd1C6SmdqlqkoKBh2qCQD62WGHSfX10ttv97DB4YdLP/qRuf2d70hbtgxabQASQGamZFlyuwJKTydIB5DaSkqkwjVvKDh9L+moo5wuBxhUBOlxwuMx0yl88YWkSy6RsrOl++5zuiwAyS48tUtNTcfKWUVFZmABO4kAksXIkdLEiVGmd5GkW26RJk2Sysul73+/m9VJAaSsCy6QAgFZf/ubhgzhMxKA1FZSItV78uV6/z3pjTcYBIqUQpAeR8aNCy046vNJTU3S++87XRKAZJeXJ+29t3TEEabvyATpEtO7AEguc+dK774bZZFAv196+GHJ7ZYef1x65JFBrQ9AHHO5JMuSZNZcYLFRAKmstFT6KnOiWocUSs3N0jvvOF0SMGgI0uPIuHHSunVScOp088B77zlbEIDk53KZZOnFF82Ce4oE6Zs2OVgXAPSzOXOktDRp8eIoG82cKV13nXTooeYJALCd/HxmfwKQ2nJyJH+GpapJB5kHlixxtiBgEBGkx5Hx483MChVFoSD9/feZpBjAoPN4zE4iI9IBJJOsLGn//c30LlFnbVmwQHr5ZTPnHgCEXXyxNHOmxrWuZkQ6gJRmWWZ6l89HHGweIEhHCiFIjyNjx5rrT7W75PVKDQ2dVh8FgMFTVMSIdADJZ+5cc/bf559H2SgtzZytE9bWNuB1AUgAy5ZJy5dr1NYVzJEOIOWVlkrv5YWC9Dfe4PMSUgZBehzJzJSKi6U1X7qlyZPNg0zvAmCg/fCH0pAh0l13dTxUXMyIdADJZ8YMc8bNyy/3YuPKSuncc6W99pICgYEuDUC822svSVJJxQrV1ZEZAUhtxcXSe+2TzQerhgYzXSiQAgjS48y4caFB6NM7Te8CAAOpvV3ats2ERiGMSAeQjFwuMyr9v/81a2NFlZEhPf20tGqV9MQTg1IfgDgWCtLz162UxIKjAFJbaalUudmlwEmnSN/+tlm0HUgBBOlxZvx4E6TbBx8iHXecNGmS0yUBSHbDhpnrzZs7HioulrZuNes2AEAymTfPhOj/+c9ONszKMmfsSNItt+xkYnUASS8UpGetWSnZtlavdrQaAHBUSYn5aFT+s7ulhx6KDAYFkhxBepzZfXdzVsz6Q86WnnpKOv10p0sCkOzCQXpVVcdDRUXmmlHpAJJNQYE0e7b0zDO9yMZ/8AMzwmr5crNKKYDUNWWKlJYm15Yq7TeqXC+95HRBAOCckhJzXV7ubB3AYCNIjzN77mnWGX3nHacrAZAyCgrM9XYj0iWCdADJ6dhjpa++klau3MmGw4ZJF1xgbt9yy0CXBSCe+f0dZwt/Y/hKvfdel1nxACCl5OdLHk8oSA8GzbTELLKFFECQHmc8HnPW4LJloQfWrOl0BwAGQDcj0vPzJbebIB1ActpzT7MuzTPP9GLjyy4zDfGVVxjpAKS6GTOk8eM1eVyTvF5OVAGQuizLjEovL5d0xhlmape//tXpsoABR5Aeh/bd16xr1fTHB6UJE6RLL3W6JADJrJsR6S6XeZhBBQCSkWVJ3/ymycU3btzJxqNHmx1ESbrttgGvDUAcu/9+ac0aeU4/UXPmSC+/zPIJAFJXcXEoSJ81yzywZImj9QCDgSA9Ds2aZT6QrRw61+zpvfaatHat02UBSFZFRdLee5tLJ8XFjEgHkLzmzJFycqRnn+3FxldeKd14o3THHQNeF4A4lpbWcfOII8zULu+952A9AOCg0lIzVZ590MHmgVdflQIBZ4sCBhhBehzKz5fGj5deWztcOuww8+AjjzhbFIDkVVoqvfvuDmlSUREj0gEkL49H+vrXzYjSxsadbLznntI115gPaQBg25q0e1DDh4tFRwGkrOnTzcCrZYEZUna2tG1bLxagARIbQXqc2mcfaflyKXjGt80DDz/MeYMABlV4RDqtB0CyOvpoqaUlxnmObds8CUBqOu00acgQWW+9qaOOkt54IzS1AQCkmL33NmH6wgfcCh44xzz49a9Ld98ttbc7WxwwQAjS49S++0r19dInk78l+XzS6tUmWQeAgdLYKJ15ZscogqIi81B9vbNlAcBAGTpU+trXzAk5vTpo+Npr0oEHmtW1brhBWrduwGsEEGcaGqSaGmn5ch19tJSXJ/3pT04XBQCDz7Kk8883680s+cavpIkTzbpbP/iB9OmnTpcHDAiC9Di1227mQ9lbq3Kk444zD/7hDwwNBTBwrr7aTCM1b5705ZcqKjIPM70LgGR27LFmB7BX4xU8Hunjj6Xqaum666SxY6Ujj5T+9jeOOgKpYvZsc33fffKmB3X++Wbh4mXLnC0LAJwwZox01FHSva9NVt0bH5jc6oorzLR4YT/5ifmstNO59ID4R5AepyzLLIL19NPSh/t+xzy4fj0LNwAYOD//uTR1qknO58zRyMduVU7rZhYcBZDUJk0yAxj+/ndp69adbLzvvmZVrYcfNuvY2LaZIPn006XcXOnRRyPbtrTwuQ1IRt/7npkLeOVK6ckndcAB0rRp0r33Sm1tThcHAIPvzDPNR55H/5FuRqPfckvki198If361+azUlGRdPbZ0v33m3n1Pv1UampyrG6gLyzbjv8hzrW1tcrNzVVNTY1ycnKcLmfQtLdLt98uLV0q3Tj2Pk2//ltmmLoktbaaUVFAkkjk93ki176DsjJzFG/tWklSm8uj2t321tD/d7l04olmmy+/NCMNMjPN1FNer+R2m0tamhmpNX262ba6WlqyREpPN4FTMGiuw3969tjDnAIomcVp/v1vcySx88XlMte77x4Z2dDUJL39duR7BQJm77WtzdweNy5SQ2Oj9MQTpqm2tZnrzrXsuac0d67ZtqXFnJ/ducbOt3ff3UyqLJnXue22rtt1tttu0re+Fbn/+9+b53T+fmGjRkknnxy5v3Ch1Nzc/e+iqEj65jcj224/uqPztkOGmOG2Yf/8p1RXZ/6d3G6zTfj35vN1reGll6TaWvO9AgFzCf/OfL7I/wdJeuopM6F++N8qXIdtm79VZ58d2faFF8z/s7BwLeF6Tj018rUlS6QNGyL/XuFLOJz8znfM8yQzSe2XX0Z+9rQ0c3G5zGXevMi2b70lffaZ+X/yta+pNxL5fZ7ItQ+Wd981+3xtbea/xDHHmIA9/N+5R2vXmp3Bhx82O4rLl0szZpiv/fGP0g9/aEatjx8fuZSUmJ44d64J3yUzWGLDhh3/74YL2H13KSPD3K6oMO+hnnrPxIlS+N9582azbfj7SqYHBgLmesKEyGfL9eul994zv4TWVvP1zpcjjzTvGclMOfjcc+a1LStSc/hy6KGmZsn8XsKLWXf+2dLSzHNnzzZ/C8K/z7//3dzu3P/D/eTgg81CQpL5ue67r+vvwLZNrc3NZnjc4YebxzdskK66KvJ9w9/b55P8fnNQ5JhjzNe3bpXuuSfS8wIB8/2amsxl7lwTBoR/v2edFdku3KPCPeuYY6QrrzTbNjVJp5xieqLb3bWnBYPmb+/ll5ttAwHphBNMXZdcEuU/YEQiv88TsvZrr5VuvNF8hnj/fa0vS9MPf2j+hJ1xhtPFAfEnId/nIYlc+2BatEh64AHTB089NfKxWxUV0p13mjOfv/hixyfeeqv04x+b22+/bZqox2M+K7ndkWu3W7rwQrNOhWRC+Msui3y2CO+Lhj9jHHdcZH9l0ybzOp0/X4X3EdLTpQMOMH9zJTN91xNPRD6DhT9jhL//bruZyeEl85njnXfMZ7SMjMi+sdfb9WdA3Ivlfc6/aBxzu00/GTJEuuap7+ikf5oswrIkHXSQ+cLxx0ulpVJBgZSVZd6seXlSYaH5JuEdivR0B38SJLRgMLJT3dJidibDYeXIkeaPhGR2aNetM19vbTXbDB8e+SODxDB8uPTBByacvftupb/7roZ++pZUVRXZZs0a6be/7fl7/PrXkRD7k09MGNCTG2+UrrnG3F6/PvLBqDtXXhkZ3VBWJh1ySM/b/uhH0u9+Z25v22aCjp6cd14kSG9uNsFXT047LRKk27Y5bbEn3/xm1yD9iivMe6M7c+d2DbEvv9zU3Z399+8apF9+eddgurNp07oG6T/5Sc/zFY4f37WGn/ykY778HZSUdA3Sb71Vev317rfNyekapN92mwnpu+N2dw3Sb7vNhP89OeecyO3wB/SeVFdHAsOFC6U//1maP7/XQTqS28yZkcFRzz1n/vuPG2feaoceavazujV2rHT99eZSXm4+j4W9+675W/jpp92/7z74IBKk33ef+R49efvtSID84IORcLY7ixebwFkyofQPftDzti+8YBYFk8z78vzze972H/+IBOnvvRcJfbvzwAORIP2jj6SLL+5527vuigTpX3whLVjQ87a33hr5PXz1lQkze5KVFQnSq6vNwY6eeDyRIL262kx11pOMjEiQ3toq/etfPW8bPlAsmb8v4QMK3cnMjNy2bemZZ8xnfcSnyy4zgwpWrZL+/neNOuMMnXKKOSmlpcX8eemxbwBAEjr+ePOn7rHHzMeWSy81076ouNjs891wgxnM8thjpneGBxGEPwtJZsDP55/3/CLhv9WS+Xv93HM9bzt+fGR/parKfIboyRVXRIL0ysqu+y7b+7//i2Qc1dUmhO/JOedIf/mLuV1fbz4nWlbXgUEej7mcdFJkwQ3bNp+NvF5zwN/vN58//H6zvzRzZtf90IsuMs8Jh/idB7GNHStdcEFk21//2vyhksxgrLo6M3gqEDCfW372s8i2N95ovr79ALNg0Py7dv48eued5vcRPkARPvBgWWYfrPN+2x/+YPZfwzlTW1vkYEheXtfPxI8/bv79wgclwt/fsszP2nn/dckS8+8X/v2OHRuZjq0f9SlIv+uuu/TrX/9a5eXlmjx5sm6//XbNmTOnx+2XLFmiyy67TB999JFKS0v1k5/8RBdeeGGfi04llmUynmHDzH5/ZaV08TGfy/O//5kNuvvw/u1vSw89ZG63tUVGi2Znm/+UOTnmSJnHY/YOO/8nnT+/6wi+8Js8GDSBTOcdoauuMv8509PNJTxaSDI7Wp2Dq4ULzbad39jho4pDhnRtPq+8Yt7Q4Tdo+M1l26b+zs3zqadM2BQeERWu27bNDlTnAO/JJ80oo/CIrM78/q7hzb/+FQkOW1rM6wcC5nt7vV13NJcsMdu63ZFRTsFgZJXqk06KbPu3v0kffmhuh4+cdh65dP31kU/djz5qdsLDAXYgEDkiK0m/+pWpWzI7rEuXRhpG50trq/l6OEC66irz/6PzyKnOl+XLIzvKCxZ0PS1re++/b6YCkUzT3z4EmD/fJBODjB61izIzTeM57zy9/Jv39L+/rdW8YdPUcUhkxAjzh7uxMXJwJTxiMfwHOCwjw/zxamvrOrIwfIS/tLTr64bD8c7vi/Af7NGjI9t6PJHhopYV6Sfp6eZ9NWZMZFufz4Qp4V4Vfu+Fa5g1q+v3PfnkrjVKkfude5XLZfptuPdsLzwqNey00yIfmLb/3p3nEJRMetfQEPnZw701GOz6+5XMz7Zli7ndefvwB6fODjzQ/B4794jw76Xz71cyH9Cys8332X5099ChXbc96CBzALfziPtwX+4cDknm/0O4d3Xu8+3tO/bnvfYyv4fw64ZHmIR/3523nzLFHJAIf8/OPW776TWmTDGjVadMkRPoUfEpM9O89Y491vwpfO45c2bgM8+YfaZwLtyjkpKu9+++2wSyn3/e9bJ5s/k/n50d2XbIEDPCqfPZH4FApFd0HhCRnW36cOezPzoLH+CWzHutuLjrGSWdzyDq/H2Li83UNeERVOF+Gd6+8883Zkyk/4XPCup8GTEisu3w4ZHPWJ1/tnC/GDWq67bhHa3Ovcy2zfs+HLhLpud897tdfwfhvwc+X9d+XVIi/eY3Xftpe3vkb1j4wINkPieff37XfhMeue73R4L88L/bAw907U+dP492/lvk95sDeOHR/p37mstl/v3DXC7zuWrCBDmBHtULeXnmYNI115jw4IwzdMYZZvdj4UKTD1x+ufmvA6B/0aPiU1qameJlv/3MWJhLLjFRwaxZ5jJ8eOgstM7B5vZn6s6aZQbndD47rvNZx9OmRbYdN8403HD20t7edR+g8+eAoUNNUw5/ffuzmvfbL7KtxyMdcURkXyYsfDZf5w+EbW2mjsZGs88Szo7COo9GD58xt732dvP8zmvttLaaAWk9aWrqGqTfe28kf9re4Yd3DdJvusksmN2dAw7oGqTfdVfPC6bttVfXIP2223o+CDJhQtcg/U9/MgNKujNiRNdc6Te/kcL55/aGDOkapN9wg/Sf/0Tuz58/IEF6zFO7/P3vf9dZZ52lu+66S1/72tf0xz/+UX/+85+1atUqjer8QThk7dq1mjJlii644AJ973vf0+uvv67/+7//06OPPqoTO49mi4JTaYw33jD/h8aOlU6cvkYz3rtfvo9XmHS9qsq8mVpbTVhz993mSdu2RR/NcuqpJtyVIkFtT445xuxNhvl8kSNZ2zv00K7/gYcO7Xni0f32M0cmw0aM6Hl05dSpJrwNmzgx+ujKNWsi9/feW1qxovtti4q6Nog5c6TXXut+26wsc1Qu7OtfN9NRdMft7jpZ4vHHRx9d2dISmbLnzDN7P7ryggvMzllPNmyI7NT++MfRRxN/+mlkx+3qq6X/9/+6ft3tjpyW/NprkSD9rrvM9+081cfRR5vF2Hqhv97n9Kj+ZdvSL39pjun8+tddMwEgldCjUtMnn5g/b2vXmj/3Z59tPgYA8YYe5YC6OjMN0Pe/H2kMI0cqULVFLYF0BdPc8me6lJYeOiAzY0bX0ZPHHWfOZOk8HUH4wP2YMZFRjJKZymz9+h2nUnK7zUGwu+6KbPurX5l9oHBYJEVCo+xsMxIw7NZbu4Y12099dNttka899JDZTwgfzN7+oNivfhXZ9o9/NGeudD7I1Pkg3s9+Fjno9/TTZh8tHIRtP53bL34RmdrqkUekV1+NvE7n7+vxmKAsP9987ZVXzD7m9gf6wmHblVdGzuJ+5hnpxRcjBxE7TylhWdK550YOJr76qtm2tTUy2KrztE4//nHkwNirr5rBXJ0He4R/v7ZtDkiGt339dTOQKvx9JfOc8GjVc86JnPG5erXZpwz/PG1tkQCvvd2ER+GDfqtXm3+7ztNMhMPBQMBMfRf+vh9/bHKE8PcMH9AN/787+eTImT7r15twq3OIFQU9KrW0tZm3yTvvmPimrc2M0fnud7uOo0pKtm3ej+GD5uH+FQxGpqwM93zbjhw0yMgwZ/xL5r335psm42tsjEwv19gYGSzVeYDpTTeZ1wz3gfAgtvAghO99L7LtJZdEBq5mZJi/C9nZkUETnecnu/FGE7p3PqAQ7mMjR5qRJmHXXBMZDR7++xDu6eEBDWG//KXJ3zr3pfBsGjk5XQP6q64yf6fC/bbz34jsbDMNT9ill5rRMOHf75FHmtNMeyGW93nMQfp+++2nvffeW3eHg1pJe+yxh44//njdfPPNO2x/5ZVX6umnn9bHH3/c8diFF16o9957T2+++WavXpPGFbF6tTnY9Nln5n54GuCpUyOfGbqwbblqt8lqbJCrvlauuhq56mtltbXKamtVe2GpWvYOHaEJBJT7l9tktbWFPmwFZdm2bJd5o7SN3k0NR0f+UOb/eoGslmYpGJDV3nVlnbaxE1Vz7iUd9wuuPFdpNdWyWltktbZIgXbzOoF2te4+RVW/jHxQLL7gGKVtrZJkPmTY6R7Z6emS5VLbiDHa/Is/Rr7vVRfIXfGV7NAb2woGpWBAslxqLyrt8n2H/uISpa/73Hw9LPS8YE6eKn/718i2/+/H8nxqRo7b6R7ZHm9Ho7N9flXe+mBk21uukPe9/0V+b7IlV5pst1tKc2vjgy93fODM/tu98n7ygWzLkhUIdNQa/kC1ecFvOoL0rKcfkXfVio7Xt9PSzHNCv+tt379Kts+M6sxY/Lw8H78npaXJdrkkV1rodprsdI/qjzlNdpYZ+Za2cYPStlaabVwu8+/b6YN724ixHTVYdbXm38vj6fp7iEFRUe9Ch/56n9Oj+l9zs/n709BgrpnmDcmEHoWdCQSk55+P5BDz50dO3AIGGj0qweTnm8Eu3Wievq/KFkVG1Y0+cKTcFV91u23rbntqw78+6rg/8qg95fn84263bRs5Vuv/G5l3eMRxM+X9aHm327YPLdS6/0VWkS89/SD533m1222DGZla+35khGTJuV9XxqvdDx6yLUtffBbsuF900YnK+vcT3W4rSV982NixH1P447OU/c+ep15a+85mBYeYM+GGXft95T5yT4/brlu6Tu2lJkwdetNlyvvLbT1uu/7fH6tt/CRJ0pDbfqb8O3/R47Ybnlqm1ikzJUl5d9+sob+5qsdtyx5dquZ9zOjo3Ad+r2E39jy11cb7/qWmg46SJGX//c8qvPqCHretuOsJNRxpzrbOeuZRFV3a82T8m37zsOqPO1OSlPHSUyr5fs/TLFb+4l7VnWZe1//aSyo958get9189W0d+/i+d19Xzt/ulfXgA/QoRNXSYo65PPCAGVt5/PFmZsWdrkMD9IOB+BwVU5De2tqqjIwMPf744zqh05QZF198sVauXKklS5bs8JyDDjpIM2bM0O/Cc9VKevLJJ3XKKaeosbFR6d3M3d3S0qKWTiOda2pqNGrUKK1bt47GFVJTYw7yf/ih9MEHVo+DvQGnXXaZ3eVMqZ7U1tZq9OjR2rZtm3I7z5MWA3rUwKmqkq6+2urxLDAgUdGj0FvV1WZ68jfeYM8Pg4celWDKyztGBbc1teu5Z4N6Y2lQlmy1unzamBmZrmfKliXyBhuVFmyTS0FJtizbliVbTe4crRh2RMe2e1f9W5ntNbJs871cdiB0aVdLWqaWlkbWmDliw0Lltm5WwEqTLVfHgCNbLjWnZejFUZGw9uCNj2pokwnzLdmdrm0FLLeeHBdZC+Go9fdqeMNnsmQGWwWtNAUtV+g6TQ9PuKEjGdt/01MaUbdaloJyKaC0UL1pdptcdlAP7P7/FHSZkRmHlT2kcTUrFHC5FbRcsuVS0HJJshS0XFo07idqScvs+D2Mq4mcYWwpqDS7XW67Ve5gmx7b7So1us3//69V/ENTtiyRbaWZKkLfP6g02ZZLz475obZ5Cjv+LSZXv6o0u03uYJvS7IDSgm1Ks9sk2Vo07ifa7DcB/fQtr2hW5Qtqc3nU7kpXwEqX+VezZMulxcPP6Nh2YvVbmrn5BaUF2+W22+WyA5JspdkBBeXSv0ddoA1ZZsqqsbUrtU/lc2q3PAq4zPsmLdhmfja7VUtLTtdXWSb4333b25r71f2h371bAcsdqsejgOXW20Xf1JfZ5qzhMXUf6NCyh+QOtsllm59NUujf0KWlJafpo6EHSZKKGr/QoWUPK2ClK2C5ZVvhAVSm5pVD52pN3qyObSfULNO+vz6ZHoVeaW01J1I8/bTV47JRQH8bkM9RdgzKyspsSfbrr7/e5fGbbrrJ3n333bt9zoQJE+ybbrqpy2Ovv/66LcneuHFjt8+57rrrQsN6uXDhkmqXDRs2xNKW6FFcuHAZ1As9igsXLvF8oUdx4cIlni/0KC5cuMTzpTc9qk8n6FvbnYNh2/YOj+1s++4eD1uwYIEuu+yyjvvBYFBbt27V0KFDo74OgMRl27bq6upU2g+TptGjAPQ3ehSAeEaPAhDP6FEA4lksPSqmIH3YsGFKS0tTxXartlZWVqqoqKjb5xQXF3e7vdvt1tChQ7t9jtfrlTe8+EhIXnhRRQBJq6+n+YXRowAMJHoUgHhGjwIQz+hRAOJZb3tUTKsGejwezZw5Uy+99FKXx1966SUdcMAB3T5n9uzZO2z/4osvatasWd3ORwUAfUWPAhDP6FEA4hk9CkA8o0cBiAs7nfxlO3/729/s9PR0e+HChfaqVavsSy65xM7MzLS//PJL27Zt+6c//al91llndWz/xRdf2BkZGfall15qr1q1yl64cKGdnp5u/+Mf/4j1pQFgp+hRAOIZPQpAPKNHAYhn9CgATot5jvRTTz1VW7Zs0Q033KDy8nJNmTJFzz//vEaPHi1JKi8v1/r16zu2Hzt2rJ5//nldeumluvPOO1VaWqrf//73OvHEE/vvaAAAhNCjAMQzehSAeEaPAhDP6FEAnGbZdmilBQAAAAAAAAAAsIOY5kgHAAAAAAAAACDVEKQDAAAAAAAAABAFQToAAAAAAAAAAFEQpAMAAAAAAAAAEAVBOgAAAAAAAAAAURCkAwAAAAAAAAAQBUE6AAAAAAAAAABREKQDAAAAAAAAABAFQToAAAAAAAAAAFEQpAMAAAAAAAAAEAVBOgAAAAAAAAAAURCkAwAAAAAAAAAQBUE6AAAAAAAAAABREKQDAAAAAAAAABAFQToAAAAAAAAAAFEQpAMAAAAAAAAAEAVBOgAAAAAAAAAAURCkAwAAAAAAAAAQRcxB+tKlS3XssceqtLRUlmXpqaeeirr94sWLZVnWDpfVq1f3tWYA6BE9CkA8o0cBiGf0KADxjB4FwGnuWJ/Q0NCg6dOn69xzz9WJJ57Y6+d98sknysnJ6bhfUFAQ60sDwE7RowDEM3oUgHhGjwIQz+hRAJwWc5A+b948zZs3L+YXKiwsVF5eXszPA4BY0KMAxDN6FIB4Ro8CEM/oUQCcFnOQ3lczZsxQc3Oz9txzT11zzTU69NBDe9y2paVFLS0tHfeDwaC2bt2qoUOHyrKswSgXwCCzbVt1dXUqLS2VyzX4yzfQowBEQ48CEM/oUQDiGT0KQDyLpUcNeJBeUlKie++9VzNnzlRLS4seeughzZ07V4sXL9ZBBx3U7XNuvvlmXX/99QNdGoA4tGHDBo0YMWLQXo8eBSAW9CgA8YweBSCe0aMAxLPe9CjLtm27ry9gWZaefPJJHX/88TE979hjj5VlWXr66ae7/fr2RwBramo0atQorVu3rsu8VgCSR21trUaPHq1t27YpNze3X74nPQpAf6FHAYhn9CgA8YweBSCexdKjBm1ql872339/Pfzwwz1+3ev1yuv17vB4Xl4ejQtIUuHTZ+LhdDl6FIDt0aMAxDN6FIB4Ro8CEM9i6VGDPzmVpBUrVqikpMSJlwaAnaJHAYhn9CgA8YweBSCe0aMA7IqYR6TX19drzZo1HffXrl2rlStXKj8/X6NGjdKCBQtUVlamBx98UJJ0++23a8yYMZo8ebJaW1v18MMPa9GiRVq0aFH//RQAEEKPAhDP6FEA4hk9CkA8o0cBcFrMQfqyZcu6rHB82WWXSZLmz5+v+++/X+Xl5Vq/fn3H11tbW3X55ZerrKxMfr9fkydP1nPPPaejjz66H8oHgK7oUQDiGT0KQDyjRwGIZ/QoAE7bpcVGB0ttba1yc3NVU1PDnFRAkkrk93ki1w6gdxL5fZ7ItQPonUR+nydy7QB6J5Hf54lcO4DeieV97sgc6QAAAAAAAAAAJAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKIgSAcAAAAAAAAAIAqCdAAAAAAAAAAAoiBIBwAAAAAAAAAgCoJ0AAAAAAAAAACiIEgHAAAAAAAAACAKgnQAAAAAAAAAAKKIOUhfunSpjj32WJWWlsqyLD311FM7fc6SJUs0c+ZM+Xw+jRs3Tvfcc09fagWAnaJHAYhn9CgA8YweBSCe0aMAOC3mIL2hoUHTp0/XHXfc0avt165dq6OPPlpz5szRihUrdNVVV+lHP/qRFi1aFHOxALAz9CgA8YweBSCe0aMAxDN6FACnuWN9wrx58zRv3rxeb3/PPfdo1KhRuv322yVJe+yxh5YtW6Zbb71VJ554YqwvDwBR0aMAxDN6FIB4Ro8CEM/oUQCcFnOQHqs333xTRx55ZJfHjjrqKC1cuFBtbW1KT0/f4TktLS1qaWnpuF9bWytJCgaDCgaDUV/v+eelZ5+1NGSINGSILb9fqqmRqqsthb5Nn82da+uUU3btewDo3s7e2wPFiR71z39au1y3ZUUuGRnSNdfYysvb5W8LoAf0qMGx2262rrjCsZcHEhY9avAdf7ytGPI8IKXRowaXZUkXXGBr5kynKwESQyw9asCD9IqKChUVFXV5rKioSO3t7dq8ebNKSkp2eM7NN9+s66+/fofHq6qq1NzcHPX1MjLcmjAhXTU1lsrKXGpqspSTYysvL6iRI225XHaffo7lyz16662gDjmkvk/PBxBdXV2dI6/rRI+aOnXXW69tWwoGpfp6S6++6tEHH9Rr4sT2Xf6+ALpHjxp4X3zh1uuvp2n+/BpHXh9IZPSowfXBB+l6+mlp5kxnfu9AoqFHDa7Fi7167bVWjRzZ5HQpQEKIpUcNyjvcsroekbNtu9vHwxYsWKDLLrus435tba1GjhypgoIC5eTkRH2twkLpkEN2rd7u3HabVFVlqbAwo/+/OQD5fD7HXjuRe1RVlfS//1nKzPSosLD/vi+AruhRMbJtqaVF6vx7q6+XXC7zmGvHZXqef166915LhYXefigASC30qMH1739Ld91lKSvLrwx2D4GdSqke9cb/k7V2rfmss/0lK0v2TTdFnnDvvbLWrJGCQXOx7ci12y37t7+NbPuHP8h6//3OP0jkIsleuNAMRZe0aZOllhavCguzd/r7ARBbjxrwIL24uFgVFRVdHqusrJTb7dbQoUO7fY7X65XXu+NOlMvlkqubHa/B4HZL7e2Sy+X8aTpAMnLqve1Ij3rnHamuruv8LOEPT263dPDBkW3fflvaskUKBCIXn0868kjJ7Zbfb57e3m51l0sB6Ccp1aPOPVf68EOzw5eWZpqMy2Wu8/Kkp5+ObPujH0nvvmt24pqapG3bpOpqqbZWys428+uFffvb0jPPSH6/dOqp0v/9n7TPPh1f9vvD+4+W3M4P5gISSkr1qDgwfbq5Xr3a0qxZztYCJIKU6lHPPGP24bqTny/r5psj9x97TPrvf7vf1uuVFZrbXZL08svSs8/2+LLWffd1DFQoLJQ2bGD/EOitWHrUgO+mzJ49W88880yXx1588UXNmjWr2/mo4pXbbfIrAMnFkR71gx/0/OFq6FBp8+bI/Z/+tPsPVz/+sXTrrfJ4zN1O0/gBSCKO9KiPPpKWLev+a/n5Xe9/+KH0xhvdb9u03enE4dOhm5qk++83l1mzpOuuk445RuF91pYWEaQDCcKRHrV0qbR1a2QkZudRnB6PdMIJkW0//ND0HL/fLCoTvs7O7vbMmN4qKTHt8MMPRZAOxDFHetT3vy8dd5zpSYFA1161/ajXk0+WZs6MjFjvPHhh+w9DZ58tzZ7d9bHOA7M6KSiQli8fgJ8NQOxBen19vdasWdNxf+3atVq5cqXy8/M1atQoLViwQGVlZXrwwQclSRdeeKHuuOMOXXbZZbrgggv05ptvauHChXr00Uf776fY3je/Ka1caRpPWlrXD1hDhnTtKKeeKr32WmQ0aHjEZ3u75PV2BFrhEekA4ltC9Kjx46XGxkhfsm3Tq1wu7bBi6IQJZkRnWpq5SNJbb5n5ps48U969ZkiSWlsHrlwA/SchetTtt5tR5eHPRJ1PHd5+p/OGGyIH/7xehVZ7l3JztcN8B88/b1Ly99+X7r5b+vvfTWB/7LHSddfJ+42fSzL9LDNz4H48AD1LiB51+eXm7L7u5Od3DdIvuUR65ZXutzv5ZOlXv5J2MlVDdyxLmjpV+uCDmJ8KYBckRI8655zeb/v97/d+25NP7vWmBQXmeGNb244f3QDsIjtG//3vf21JO1zmz59v27Ztz58/3z744IO7PGfx4sX2jBkzbI/HY48ZM8a+++67Y3rNmpoaW5JdU1PTuyfss0/nXb6ul/z8rtseemjP26anm22CQXvdtGPsj0YcYdvV1THVDqB3Yn6f9yAhetSuOvVU287Ls+2nnrJt27a/9S3bfvrpwXlpIFXRowZAVZVt/+hH5jPXnXfaK1fa9jHH2HZ5udOFAYknpXrUeefZ9uzZtn3AAbZ94IG2PWeObR98sG0fcohtf/ObXbc97TTbHjXKtgsKbDsz07Zdrsi+Xmmpbbe3R7atrIyp7n/9y7xcQ0NMTwNSUkr1KCdUV5t9w4cesm3btles4DMVEItY3ueWbYdWJohjtbW1ys3NVU1NzU4Xd5AkffKJmX84PLK88+kuHo+0996RbT/7LLL4VXhEaHgku9stjR4tSQq60+UKtEtffSUNHz5APymQumJ+n8eRQa+9stLsAoZWoD/9dOmkk6QTTxz4lwZSFT1qAL35prT//lr9iaUrrpDuvFMaNcrpooDEEvfv8ygGtXbbNqe9vPqqGa55yinm8fZ2acQI89nqzDPNh6uRI6N+q7Iy6cILpZ//3MzMAKBn9KgB9sYb0te+JpWWSmVlHf3p//0/c/YMgOhieZ8n5wyUEyf2ftsJE3q1WcDtNUE6ExEDcFphYZe7Xi+tCUACC8332bHmQ7MticXdAQwAyzIfnA4/vOvjH3xggvVNm8z0UwsWSI88YqYB7UFpqZkh5oMPCNIBOGz6dNPfNm6UKipUUFAsSaqqcrguIAmxhm8vBd2hvTsmIgYQT/75T5217EcE6QASXsn/naBFz/vkffoxp0sBkGpmzJAqKqQ//lHaf3+zjs3FF5szl3tgWdKUKWbBUQBwVGamNGmSub1ihTwes1wNQTrQ/wjSeymY7jU3SKsAxIu1a6UTT9Tcj/6gwhX/droaANglLgXkCbYoWFPndCkAUlF+vvTd70pLlpiF4Tdtkn7zm6hPmTrVzBTa1DRINQJAT8JTGC9fLsksOEqQDvQ/gvRestMZkQ4gzowdK51/viRpxMpnHC4GAHaNKyfb3KglSAfgII9Huvlmc/vXvzYj1XswdaoZvL5q1SDVBgA9IUgHBgVBei8xIh1AXAqt85Bev83ZOgBgF7nyzMI+dm2tw5UASHknnSR9/evSdddJeXk9blZaKg0ZwvQuAOLAjBnmmiAdGFDJudjoALA9XgXkUlpbm9OlAEBEbq4kyd1Y43AhALBrXLlmRLpVx4h0AA6zLOn55831TjabOtUsOAoAjgoH6V9+KW3dqoKCfFVVSba901YGIAaMSO+l/92zUscfE1Dw4EOdLgUAIkJBuqeJIB1AYrNCU7tY9QTpAOJA5+QpGOxxs/A86c3Ng1ATAPQkL0964gnp44+lvDwVFJi+FGXNZAB9QJDeS2meNElSe7vDhQBAZ6Eg3du0zdk6AGBX5ZipXax6pnYBEEdeeEGaNs0sQtqNKVOYJx1AnDjhBGnSJMnlUkGBeYjpXYD+RZDeS+np5pogHUBcCQfpzYxIB5Dgxo7V6qKDtK1oktOVAEDEM89IH30kXX55tyPThw83A0GZ3gVAPCFIBwYGQXovjfzrLVqw7FuyX/mP06UAQMRee+mRX27QjaewyhWABPfNb+q245bo3WOuc7oSAIi47jopK0tatkx67LEdvsw86QDixtat0m9+I112mfLyJLdbqqx0uigguRCk91LOR2/ogIonpS++cLoUAIjwehUoGaFaO9vpSgBgl3k8Umur01UAQCdFRdKVV5rbV10ltbTssAnzpAOIC+3t5uyZ226TVV+nggJGpAP9jSC9lyyvV5IUbNrxgxMAOMnr7XafDgASDv0MQFy69FKppERau1a6664dvjx1qpn15eOPHagNAMIKC6URI8zt994jSAcGAEF6b3k8kiS7hWFSAOLLjL//VN95/Tw+JQFIbJ98op/fXaT51412uhIA6CozU7rxRnP7xhul6uouX2aedABxY8YMc718OUE6MAAI0nuLEekA4tSoV+7TYV/eJ7tik9OlAEDf+XzKaqxURj2TeQKIQ+ecI02ebEL0v/61y5csS5oyhSAdQBzYe29zTZAODAiC9N7ymSDdbiZIBxBfAlm55nrLNmcLAYBdkW3Wekhvb5ba2hwuBgC2k5Ym3Xmn9NRT0kUX7fBl5kkHEBfCI9JXrlRBgTn2197ubElAMiFI76XwHOkE6QDiTThIb99S43AlALALsjstmlxX51wdANCTgw+WjjvODEHfztSpUiDAPOkAHDZpkrles0YFw2zZtrRli7MlAcmEIL2XLC9zpAOIT3Y2QTqAJJCervZ0n7lNkA4g3jU3d+lVI0ZIublM7wLAYWPGSC6X1NCgIstMl8f0LkD/IUjvpYaf3qhvzWvSxkt+5XQpANCFnROa2mUrQTqAxNbmC41KJ0gHEM/uvtusMHr77R0PWZYZlf7hh86VBQDyeqWPPpIaGpS/R5EkgnSgPxGk91JahldtaT4FbH5lAOJMXp4kKVhNkA4gsbX7Q0F6ba2zhQBANNnZ0tat0sKFUjDY8fDUqdKnnzJPOgCHTZokZWTI5zPtiiAd6D+kwr3kdptr1r4CEHfyzIh0u3qbs3UAwC6qHr+PVhfMMaOpACBenXiiGciwbp300ksdD4fnSV+92rnSAKCzggKCdKA/EaT3kvfVl3XpirM17JHfO10KAHTRdMlVOnfuepVfcK3TpQDALln+k7/p2kOWSjNnOl0KAPTM75fOOsvcvvfejoeZJx1AXHjnHem735V+8QuCdKCfEaT3Uvq6NTqs7CFlr1jidCkA0EV6aYE2+0eq2ZXhdCkAsEs8HqmlxekqAKAXLrjAXD/9tLRpkyQzT/qUKQTpABy2caP0pz9JTz2lwkKpstLpgoDkQZDeSy6fx9xg7w5AnPHQngAkCa/XTDfc3u50JQCwE1OnSvvvbxrW/fd3efizz5gnHYCDdtvNXK9Zo4JhtqqqJNt2tiQgWRCk95LLb+bqtFpJqgDEF+8XH+s7q36sor/c4nQpALBLJjx4jR58qVjBW37ldCkAsHPhUel//nNHSjV1qsnWmScdgGPGjTPXNTUq8W5Vc7PU0OBsSUCyIEjvpfCIdKu11eFKAKCr9MoynfDFb1X40sNOlwIAu8TT3qQhLZsUrNzsdCkAsHOnnipdeaX07LNmXhdJI0dKOTlM7wLAQX6/WbRBUknDGknSZj5aAf2CIL23vKER6W2MSAcQX6wheZIkd32Ns4UAwK7KyZEkBbfVOlwIAPRCZqZ0yy3SxIkdDzFPOoC4EJreJWuTCdIZkQ70D4L03vIytQuAOJWbK0lyNxKkA0hsVm62JMmurXO4EgDou2nTzDzpW7c6XQmAlBUK0v1fmSC9sdHJYoDkQZDeW6HV/Kw2pnYBEGdCQXp6U50UCDhcDAD0nSsnFKTXEaQDSCBvvSWdcop0xx2SpEMOMTMr/PWvzpYFIIWFgvT06k2SpKYmJ4sBkgdBem997Wv6/klVeunG/zldCQB0FQrSJUm1TIcAIHGlDTFTu1j0MgCJZOVK6fHHpTvvlGxbmZnS6adLL70kffml08UBSEnf/75UVyf3H++SRJAO9BeC9N7yeNScNUwt6VlOVwIAXXm9aksz00+phuldACSutDwzIl31jEgHkEDOOEPKyJBWr5Zef12SNG+eVFws3X+/s6UBSFE5OVJWlixL8vkI0oH+QpAeA7dbam93ugoA2FGzN8/cIEgHkMDcpYX6Ime6mkZO3PnGABAvcnKk004zt//0J0lm3/Gcc6R335VWrHCuNADw+wnSgf5CkN5bVVU6643va58HLnK6EgDYwZ/PXqq7frpe2nNPp0sBgD5z7z9LFx+0Uh9e9YjTpQBAbC64wFw//ri0bZskafZsaY89pPvuk4JB50oDkKIWLJAOP1y7NX9IkA70E4L03mpo0EGr7tHur93ndCUAsIP60t21JWOklJ7udCkA0Gehtd3VytruABLNfvtJU6aYYZ+hVUYtSzrvPDNP+iuvOFsegBT06qvSK69odMMqgnSgnxCk95bXzD+c1t4i2bbDxQBAVx6P1NLidBUAsGssi34GIEFZVmRU+r33duwzTpwozZkjPfyw1NzsYH0AUs/48ZKk4oY1amx0uBYgSRCk91YoSLdsWwoEHC4GALqavHqRjvz3j6X//MfpUgCg79radMdLu+vws0tY8wFA4vn2t6W99zaTo3faZ5w/X6qtlZ56yrHKAKSi3XaTJBXVrmFEOtBP3E4XkDBCQbokM0zKza8OQPwY/+kL2mPZQunNfOmww5wuBwD6Jj1dwxrWKT3YalKn3FynKwKA3svPN6uLbqeoSDr2WGnRIunII81mADDgQkH60G0E6UB/YUR6b4Un7ZQ43xhA3AlkhcImRnACSHAt6dnmRl2ds4UAQD865RSzlM0jrKUMYLCEgvT8LQTpQH8hSO8tt1u2LHObFbAAxJlANkE6gOTQ4gkF6bW1zhYCAH3V1ib9+c9mYvSQrCzptNOkF1+U1q1zsDYAqSMUpGfWlitQ2+BwMUByIEjvLctSuzs0vQsj0gHEmWB2nrlBkA4gwbV4GZEOIME98ohZePSKK9R5GOjRR0vFxdJf/uJgbQBSx5AhUn6+mnMK5a2ucLoaICkQpMfgTz/+RL+6ZKM0YoTTpQBAV7mMSAeQHFp9OeYGQTqARHX66dLo0VJFhXTPPR0Pu91mHdJ335VWrnSsOgCpZMMG/fvBTfoybbzTlQBJgSA9Bo3DRmmbv0RKS3O6FADows4xQbq9bZuzhQDALmr3MbULgATn8Ug/+5m5fcstUkNkSoXZs6U99pAWLpSCQYfqA5A6MjLk95uJFeg5wK4jSI+B2y21tztdBQDsyMoLjUjfxoh0AImtpmA3VRROMxMKA0CiOvtsadw4qbJSuuuujoctSzrvPOnLL6X//Me58gCkDr/fXLPgKLDrCNJjsO9/f6ljX/qR9PnnTpcCAF20TNtHPzjofTU89ZLTpQDALll68h902znvSSed5HQpANB36enStdea27/8ZZfpqiZOlObMkR58UGpudqg+AKnhlVc0/fIjdP5HlxCkA/2AID0Gk95+QHNW/kHasMHpUgCgi/QhWVqXM1Utw4Y7XQoA7BKPR2ptdboKAOgHZ54pTZggbdki3XFHly+dc45UXy89/rgzpQFIEbW1ynn7ZU2sfosgHegHBOkxCKZ7zY2WFmcLAYDteGlPAJKE10svA5Ak3G4zKn3uXOnQQ7t8qbBQOuEE6cknzewvADAgSkslSfkt5QTpQD8gSI8BQTqAeOVJt3Xqpzcq87rLu5w6DACJZtKyh3TtXydKF1/sdCkAsOvOPFN6+WVp//13+NLJJ5vlIO6/f/DLApAiSkokSUOay9XUaDtcDJD4CNJjYKd7zA3ONwYQZ7w+Syd9foty//wbqarK6XIAoM98gUYV134qrVvndCkAsOssq8cv+XzS/PnSq69KH388iDUBSB3FxZKkdLtNbRVbHC4GSHwE6TGwGZEOIE55PFKDO9fcqalxthgA2AV2To65wdk1AJJJZaV0+eXSLbd0efiww6Tx46U//UmyGSwKoL95PLKHDZMkBcvKHS4GSHwE6TEIegjSAcQnr1dqTA8F6du2OVoLAOwKKzvb3CBIB5BMli6VfvMb6eabpa1bOx62LOmCC6TPPpP++18H6wOQvELTu6icIB3YVQTpMbAJ0gHEKa+XEekAkoOVY4J0u7bW4UoAoB9961vStGlSba302992+dLkydKBB0oPPCA1NztUH4CkZQ0frlrvMLXXNjpdCpDwCNJjsOqC2/WDIz81C8YAQBzpMiKdIB1AAnPlhoN0RqQDSCIul3T99eb2734nbd7c5cvnnGNOxFm0aPBLA5DknntOl5xRpc+nHu90JUDCI0iPQVvxSG3wTZDCc3cCQJxIS5Ma0/PMHYJ0AAksLc8E6RZTuwBINscdJ82YIdXXS7fe2uVLRUXS8cdLTzzBuvEA+pnLJb9fampyuhAg8RGkxyA9XQoGWQQGQPyxLKnZyxzpABJfWn6uNvlHq33UWD50AUguliXdcIO5fccdZgHSTk4+WcrIMFO8AEB/ysiQGpnZBdhlBOkxKFj2gs5afZUCz/3L6VIAYAfPTrtK//71+9IPfuB0KQDQZ2klhTp/7pcqf+E9EzoBQDL5xjekffaRGhqke+7p8iW/Xzr7bGnJEmn1aofqA5B83nlHFy46XIc/8G2nKwESHkF6DIa+94pOWXOz9J//OF0KAOygbugYVRZNlfLznS4FAPrM4zHXrO0OIClZlnTjjdIJJ0iXXrrDl+fOlcaNk/78Z07KAdBP2to0fu0rGv7l605XAiQ8gvQYWKE9u2Bzq8OVAMCOvF6CJwCJz+s11/QzAEnrqKPMqqLZ2Tt8yeWSLrhA+uQTMzIdAHZZaakkKbtuI0fogF1EkB4Ln9mzs5vZswMQf0Y2rNbUp26U7r3X6VIAoM+8Xunqd47TbsfuIa1c6XQ5ADAwwlNX2bb0pz9JtbUdX5oyRTrgAPPwunUO1QcgeRQXS5LcgVaputrhYoDERpAeA8tLkA4gfpXUfar9nrtWWrjQ6VIAoM+8Xqmk8XP5vlwtbdnidDkAMLB+/GPpu981k6MHgx0P/+AH0rBh0lVXSV9+6Vx5AJKAz6eWzND0n+XlztYCJDiC9BhYXjO1i93C1C4A4k8gO8/cqKlxtA4A2BUej9SUFpruoK7O2WIAYKCdfro5gvjPf0q/+EXHw9nZ5m44TP/iCwdrBJDwmvNLzI2NG50tBEhwBOkxsMJTuzBpJ4A4FMjKNTcI0gEkMI9HakzPMXc6TXUAAElpn32ku+82t6+7Tnr22Y4vZWdLN90kFRVJ11wjff65QzUCSHitQ0NBOiPSgV1CkB6D8Ih0MSIdQByyc0JB+rZtjtYBALvCsqSWdEakA0gh554rXXSRuX3mmWal0ZCsLDMyvbhYuvpqac0ah2oEkNDaC4drm6dA7c1tTpcCJDSC9Bg0zztBP5qzQpU/+4PTpQDAjnJDQXpzs9TKAT8AiavFGxqRTpAOIFX89rfSgQeaM3GOP77LGTmZmdKNN0ojRpiR6Z995lyZABLTl9f9RWcdWanG085zuhQgoRGkx8AqGKa1uXuppWiU06UAwA6s3JzIHaZ3AZDAWn2MSAeQYjwe6fHHpeHDzbDz117r8uXMTOmGG6SRI02Y3mnQOgDslD/DkiQ1NTlcCJDgCNJj4Hab6zbOhAEQhzz+NDWFp0MgSAeQwBqzilQ/dJRJjgAgVRQXS088Ib3yinT00Tt8OSPDhOmjR0s/+5m0erUDNQJISBkZ5pogHdg1BOkx8JSt1Smf3aS8v93jdCkAsAOPR/r1ES9J771nhisBQIJ6Zb+r9Neb1klXXeV0KQAwuPbdVzrooMj91aul9vaOu36/dP310rhxJkxnznQAvZFd/ql+8eZcDfv2UU6XAiQ0gvQYeMq+0FmfXKOhj97hdCkAsAOvV/o4Zz9p2jRzBwASlNcrtbQ4XQUAOGzDBjNv+hFHSOXlHQ/7/dLPf27GTdx8M7NgAdg5b6Zb07f8RxnLlkq27XQ5QMIiSI9Bms9jbrSxiB+A+OPxsMYogORAkA4AMqPRW1r0/9m78/io6uv/4+87mUwyk4XsQNgVBFkEBBe07lbFpbZqta11q120+q0WbdW2WrW/1rVWq3WrtlZt1VbqVnFX3FAUhLqAIEW2kLAkZN+T+/vjM5MFkiEzJPncIa/n43Efd+bOncxJdD7ce+6556P586Xp06U33mh7KTVVuvJK06bh1lul1lZ7YQLwvpTRQyVJvoZ62oACu4BEegySQqbC02nkzA6A96SmSlPXPyf3N/9P+uAD2+EAQNz22LJQ3/7jgdLpp9sOBQDs+epXpUWLpClTpE2bpKOPlv7f/2vLmhcUSD//ubRkifTYY5ZjBeBpwZygqpOzzJMOd7gAiA2J9Bj4guFEOhXpADwoEJAOK/qHnGuult5913Y4ABC3FKdRwzcsNHM+AMBANn689P770nnnmQT61VebiUi3bpUkTZsmffe70uOPSx9+aDdUAN7l80nbUk1VujZutBsMkMBIpMcgUpHua6IiHYD3pKRItf5B5gm36wFIYG4mYxkAtAmFpL/8xSzBoPTSS9KNN7a9/M1vmjlKf/97Ck0BdK8yLZxIZ6AA4kYiPQZJQdMj3UdrFwAeFAhINckknwAkvrZEenm51TgAwFPOO09auFA69VTp+uvbNjuONGeOlJlpJh9ljgkAXalKLzQPqEgH4kYiPQZOari1SzOtXQB4T0qKVBPpe0ciHUAiGxROpDc0kBECgI6mTJGefNJUqXeQlib94hdSUZF0992S61qKD4BnVQ8aptr0fNthAAmNRHos8vP1q8Pe1ts3LrAdCQDsICVFqkrONU/CfTMBIBH5BmW0P+HCIADsqLlZeust6a672rLmo0dLF18svf669OKLdsMD4D2vHX2D7rl2s5mlGEBc/LYDSCiBgFYN+Yr23cN2IACwo5QUqSKlwDzZvNluMACwCwLBJNX5MxRsrjKJ9IIC2yEBgLe0tEhHHy01NUknnmiy6JKOOEJauVK6/35pjz3MXKUAIEnBkKO6OttRAImNivQY+f3m4j8AeE1KilQRCN+qt2WL3WAAYBcEAtLW0AhpxAipkZZ6ALCDlBTT5kWSFi/u9NL550tjx5r5SLmpB0BEMCgS6cAuIpEeo+O++KPGPXWzVF1tOxQA6CQQkNZkTNGyu+dL8+bZDgcA4hYISBcf/pm0bp00aZLtcADAm2bMMOtFizpt9vulK64wxep/+AP90gEYuS2bdc4jR0n77svAAMSJRHqMvrXock1//AqpvNx2KADQSUqKVJecqdLJh3EfL4CElpIitbZyFyAARBVJpG9XkS5JeXnSpZeal15/vX/DAuBN/kFp2mv969KSJVJVle1wgIREIj1GzUkp5kFDg91AAGA7gYBZMzwBSHQpHG4BwM51TKR3UV06c6bpmf7AA9K2bf0cGwDPSc5KU21ypnlSXGw3GCBBkUiPEYl0AF6VlGRu5c178VHp+utNSwQASEApKdJpq25UymEHSo88YjscAPCmKVOk5GSprExau7bLXX7wA3OMeO+9/RwbAM8JBqWy1ELzZONGu8EACSquRPrdd9+tMWPGKDU1VTNmzNDbb7/d7b7z58+X4zg7LJ9//nncQdtEIh3wvoE8RqWkSKPn3ir9+tfS8uW2wwHQhYE8RvVUICAV1K6Rf/FCafVq2+EAAwpjVAKJMuFoREaGdMEF0oIFZgESHWNU/IJBqTRAIh3YFf5Y3/DEE0/o0ksv1d13362DDz5Y9913n2bPnq1ly5Zp5MiR3b5vxYoVyszMbHuen58fX8SWtSaFeyc0NtoNBECXBvoYFQhI9enh2LdssRsMgB0M9DGqp1JSpJrkQeZJRYXdYIABhDEqAd16q5SaKk2d2u0uBx8sHXigdM89Ju+ekdGP8QG9iDFq13SqSC8qshsMkKBiTqTfdtttOv/88/X9739fknT77bfrpZde0j333KMbbrih2/cVFBQoKyurR5/R0NCghg4V35WVlZKk1tZWtba2xhpyr2r2m4r01ro6MwsWgF7RW9/tgT5GBQKOatLyTDybNjFOAb2EMap/+f1Sjd+c8Lrl5XITJG7AFsaoAeyww9ofR/n7/ehH0kUXOXrgAVeXXNIPcQEdMEZ5Q0qKtC6cSHc3bOD4CgiL5bsdUyK9sbFRixcv1pVXXtlp+zHHHKMFO7lPbPr06aqvr9fEiRP1q1/9SkcccUS3+95www267rrrdti+ZcsW1dfXxxJyr2vxJUuSyjdtUuPmzVZjAXYnVb0wazhjlNTSkqHycBVn7Zo1qmacAnoFY1T/qqryqdJJkyQ1bN6scsYyICrGKPTEKacE9OCDIU2aVK199mm2HQ4GEMYob6ir86skeaiacvLU2NSkKo6vAEmxjVExJdK3bt2qlpYWDR48uNP2wYMHq6SkpMv3DB06VPfff79mzJihhoYGPfLIIzrqqKM0f/58HXrooV2+56qrrtKcOXPanldWVmrEiBHKz8/vdDuODQ+edJ9Cvjp9+6ipUk6O1ViA3Ulqauou/wzGKCkry1HjoOGSpLTaWoUKCqzGA+wuGKP6l88nNaTkSpJS6utVwFgGRMUYNcD9/e9y3n9f7hVXSMOHd7vbaadJn3zi6LHHUnTwwa6CwX6MEQMaY5Q3VFdLt+55iY55+icaN05iCACMWMaomFu7SJLjOJ2eu667w7aI8ePHa/z48W3PZ82apfXr1+vWW2/tduBKSUlRSkrKDtt9Pp98vrjmR+01JWMOMrHkWQ0D2O305nd7II9RqalSVdAknJytW+VYjgfYXTBG9a9gUKoNZEmSnMpKxjJgJxijBrjbb5c++kjOEUdIUfpES9L//Z900UXSI484uuCC/gkPYIzyhrQ0yXGkhgZHCf6rAL0qlu92TF+dvLw8JSUl7XC1b/PmzTtcFYzmwAMP1BdffBHLR3uG3y+1tNiOAkBXGKNM37uqFCYbBbyIMarnAgGpxp+l5rRMKRSyHQ4wIDBGJbCZM8168eKd7jp4sHT22dLzz0uffdbHcQG9iDFq10UOqerq7MYBJLKYEumBQEAzZszQK6+80mn7K6+8ooMOOqjHP2fJkiUaOnRoLB/tGWNXv6x9379bWrbMdigAtsMYZRLp/ys8RHrzTemRR2yHA6ADxqieCwSk5XmH6NUnK6T5822HAwwIjFEJbMYMs+5BIl2STjxRmjBBuvNOqbGxD+MCehFj1K4LBiW5rsZd9FUzCNAjHYhZzK1d5syZo7POOkszZ87UrFmzdP/992vdunW6IHxf2FVXXaWioiI9/PDDkswsyqNHj9akSZPU2NioRx99VHPnztXcuXN79zfpJ9Pfu1tjP3tGeuc+aeJE2+EA2M5AH6MCAWlrUp7Uza2KAOwa6GNUTzmOqZqiYgroX4xRCSqSSF+0SHJdM4hG4fNJP/mJWR57TDrnnH6IEegFjFG7JjlZ8iU5Cq3+VNpWIm3YIDEPDRCTmBPpZ5xxhkpLS3X99deruLhYkydP1rx58zRq1ChJUnFxsdatW9e2f2Njoy6//HIVFRUpGAxq0qRJev7553X88cf33m/Rj1oD4V5ZDQ12AwHQpYE+RqWkMDwBXjbQx6hYBINSba3tKICBhTEqQU2ebDJk27ZJa9ZIY8bs9C0jRkjf/rb0979Lxx4rDRnS92ECu4oxatc4jjm+qssZptRtJdLGjdK++9oOC0gojuu6ru0gdqayslKDBg1SRUWF9VmSV+x/lsZ/+Kh0663SZZdZjQXYnXjpex4rL8V+//3Sxx9Ld+1zv1RcbGaUysmxGhOwO/DS9zxWiRr7RT92deVbszUivdw0883NtR0S4FmJ+j2XEjt2T5kxQ/roI+lf/5JOO61Hb2lokM46Szr5ZOnMM/s4Pgxoifw9T+TYu3LeedL1H5+sER89K917r/SjH9kOCbAulu858/TGyKUiHYCHtVWk//rX0rXXSmvX2g4JAOISSnM0eNW70sKFUlmZ7XAAwNsiE46uWNHjt6SkSF/5ivT666YjDIDdXzAoVWcUmidFRXaDARIQifQYuckB84BZWQB4UFsiPT/fbNiyxWo8ABCvUEiqTxlknlRU2A0GALzu6qulTZukX/4yprcdfbSZb/DTT/soLgCeEgpJ5WnDzBMS6UDMSKTHiIp0AF6WkhK+zkciHUCCC4Wk+gCJdADokeHD45o0cO+9paFDpdde64OYAHhOMChtC5FIB+JFIj1GJNIBeFlbRXrkRGrzZqvxAEC8gkGpNplEOgD0JceRjjxSevddqb7edjQA+lowKG0NjjDni4MG2Q4HSDgk0mO0/oizdethz0k/+IHtUABgB4GA1NwsteZRkQ4gsYVCUo2fRDoA9Nh990nHHSfNmxfT24480iTRFyzoo7gAeEYwKH065GjTCuqJJ2yHAyQcEukxqhk1UYuHnmjugQMAj0kJ3zTTkhOuSCeRDiBBBYNSdRKJdADosY8+kl56SXr77ZjeVlAgTZlCexdgIAiFpLo621EAiYtEeoz8flPtCQBeFAjPh9ycTUU6gMQWCkkVSdlSRobU2mo7HADwvhkzzHrx4pjfetRR0scf0xUQ2N0FgyTSgV1BIj1Ggzat1FdWP8zlegCeFKlIrznyJOmtt6Tbb7caDwDEKxSS7tr7brkVldKcObbDAQDvmznTrBctklw3prcefLCUmiq98UYfxAXAM0IhqbZW0tlnS+PH09MJiBGJ9Bjlf/qGLvnoHLl33mk7FADYQSSRXpddKB1yiDR6tNV4ACBeoZDkymHyOwDoqcmTze2J27ZJa9bE9NbUVOmgg0y9WIw5eAAJJCtLqqqS3DVrpZUrpbVrbYcEJBQS6TFyUk2Wym1otBwJAOwokkhvaLAbBwDsqlDIrGtr7cYBAAkjEDDNzqW427sUF0uff97LcQHwjOxss27IH2YeFBXZCwZIQCTSY+SkhBsQ15OlAuA9bYn06ibpT3+Srr1WauTCH4DEEwpJE0vfVujU46RLLrEdDgAkhkif9EWLYn7rlClm4lG6mAK7r5wcs67NCifSN260FwyQgEikxyolUpFOIh2A90QS6fVNSSbxdN11TDgKICEFg1Jac7mCb74kvfee7XAAIDHMmCFlZkotLTG/1XGkI4+U3n6bOgxgdxVJpFdmUJEOxINEeox8QVq7APCu9HSzrqnzSXl55gmJdAAJKBSSav2DzJOKCrvBAECiOPdc0yP9llvievuRR5qWWu+/37thAfCGzEwpKUkqC5JIB+JBIj1GkR7pNCAG4EUpKZLfL1VWSsrPNxtJpANIQMGgVJNMIh0AYhIISL74T/OHDpX23lt69dVejAmAZziO6ZO+JUBrFyAeJNJj1NYjnXvdAHiQ40gZGWYmdhUUmI2bN1uNCQDiEQxSkQ4Au6S1Na63HX20tHSpVFrau+EA8IbsbKnIGS4NHiwNGWI7HCChkEiPUfNeE3Xz9MdUfu0dtkMBgC61JdKpSAeQwPx+qSkUTqTX11PEAAA99cAD0rhx0i9/GdfbDz5YSk6W3nijl+MC4Ak5OdJ6Z6RUUiItWGA7HCChkEiPkVOQr7eHfUu1XznGdigA0KXMTBLpAHYTmZntj6lKB4CeaW2VVq2SFi2K6+1padKsWdJrr0mu28uxAbAuJ0cqK7MdBZCYSKTHyO836+Zmu3EAQHd2aO1CIh1AggqmJ6kxNcPMpFxdbTscAEgMM2aY9eLFcWfCjzpK2rBB+uKLXowLgCeQSAfiRyI9RsmNNTqoeK5Sn/uX7VAAoEsZGeHJRr/7Xentt6VrrrEdEgDEJRSSHrh5m7k6OGaM7XAAIDFMnmwmHd22TVqzJq4fMXWqlJtrqtIB7F6ys82Nfq1X/kLaay/p4YdthwQkDBLpMQpUl+mqxadpyM++azsUAOhSW2uXMWOkr3xFGj7cdkgAEJdgUKqpT7IdBgAklpQUacoU83jx4rh+hM8nHXGE9NZbUlNTL8YGwLqcHHOzSmNJqbnt5MsvbYcEJAwS6THypQbMuqmRhnEAPKmttQsAJLhQSKqrsx0FACSgSHuXOPukS6a9S3W19MEHvRQTAE/IzjbrmkGF5kFRkb1ggARDIj1G/rSU9idcmgfgQRkZUk2N1FJeJd11l/S739kOCQDiEgpJ+71xkzR7tjRvnu1wACBxzJxp1nFWpEvmpsaxY6V33umlmAB4Qk6OWVemDzMPSKQDPUYiPUa+YIdEekODvUAAoBsZGWZdU9Yg/d//Sb/8pdTYaDcoAIhDMCgNLloivfgiM94BQCz220+aNs00O9/FH7NkidTS0jthAbAvK0tyHKk0lUQ6ECsS6THyhwLtT0ikA/CgSCK90p9jGlxK0tat9gICgDiFQlJV0iDzpKLCbjAAkEimTTMZ8Ftv3aUfM3OmudNxxYreCQuAfT6fSaZvCYQT6Rs3Wo0HSCQk0mPkT0lSixOe9IoKTwAelJlp1lU1PikvzzzZssVeQAAQp1BIqnJIpAPALrvrLumGG6TW1pjeNm6cObbchVbrADwoO1sq8o0wT7ZskSor7QYEJAgS6THy+6UmX7i9CxXpADyorSK9UlJ+vnmyebO1eAAgXqGQVCES6QCwS1avlubMkX7xC+nYY6WSkh6/1XHMvKW70GodgAfl5krF9dnS3ntLBx3EHcxAD5FIj5HfL9095R59+vOHzcgDAB6Tnm7WVVVqT6RTkQ4gAYVCUmVSlnlCIh0A4jNmjHTffWZQffVV0zf95Zd7/PYZM0wuvqysD2ME0K+ys6Vt2yR99pn07rvSHnvYDglICCTSY+Q40psjz9b6w89q758AAB7i94fbIVRJKigwG0mkA0hAwaBU66ciHQB2ieNI551n+rNMmWLuVDz2WOmqq6Smpp2+ffp08yOoSgd2Hzk54YtjjmM7FCChkEiPg98vNTfbjgIAupeevl1rFxLpABJQKCTVJIcT6cxNAwC7Zu+9pYULpQsvNM9vvFE691zJdaO+LTNT2msvEunA7iRSkd729ad1MdAjJNLjMLhxvQreniu9/bbtUACgS5mZ4Yr0iy82Y9VFF9kOCQBiFgxKi/Nna/XKZmn+fNvhAEDiCwalu++WnnxSGjTIVKhHKlKrq81Y29Kyw9tmzpSWLKGgDNhd5OSYuYcrV281F9mysylaAHqARHocDln/Dx1wy2nSPffYDgUAupSREU6kT5ggfeUr0tChtkMCgJiFQlKrz6/ahiTboQDA7uXUU6X//lc655z2bc8+Kx1xhDRihHTppdL777eVq86YIdXWSp9/bidcAL0rJ8esS5Urbdwo1dVJy5fbDQpIACTS47A5e7x5sGKF3UAAoBttiXQASGChkFnX1dmNAwB2S6NGdS622LZNysqSioulO+6QZs0yE5XefbfGjjUF7LR3AXYPkUT6tnJHmjbNPFm61FY4QMIgkR6HtkT6ypU77ScHADa0tXaRzK27F1xgxiwASCChkBRoqdOoK74lzZ7NLccA0JcuukjatEl67jnpzDPNpDtr10oXXSTnht9pxgwzXymAxJeVZdZlZSKRDsSARHocyrL3VKsvyfSQ27jRdjgAsIOMjPBko5JpQ3XffdLrr1uNCQBiFQhIrf6ACt54QnrxxQ4DGwCgTwQC0oknSo8+apLq115rtr/8smZObdKaNdLWrTYDBNAb/H5TfFVWJmn6dLORRDqwUyTS4+CkBFSVN8Y8ob0LAA+KtHZxXUmHHGI2MkEygATjOFJKKElNqelmQ3m51XgAYEAJhaRf/9ok1Z9/XtP2S5bjSB99ZDswAL0hJ6eLinS6LgBRkUiPg98vlRfQJx2Ad2VmSk1NUkODSKQDSGihkFSXOdg8KS62GwwADERnnimlpSkjw8xjX/zU+7YjAtALcnLM1AiaOFFKTjYFC2vX2g4L8DQS6XHw+6WyfBLpALwrPVy8WVUl6YADpKQkaf16ad06q3EBQKxCIakqe6R5wskdANjjujp79a91zr2z1HLbHbajAbCLsrPDFemBgHTKKdLZZ0stLbbDAjyNRHoc/H5p2b7flebOlS65xHY4ALCDzEyzrqqSyarvu6/ZQFU6gAQTCknlg0aZJ1wMBACrCoe0SpKSLrtUuusuu8EA2CVtrV0k6fHHpb/9TdpzT6sxAV5HIj0Ofr9UPGS6uWI3ZoztcABgBxkZZt02Lx/tXQAkqFBI2pZORToAWOc4yv7j9Xpu0pXm+f/9n3T33XZjAhC3SGsX2qIDPUciPQ5JSdztAsDbIon06urwhkginWpOAAkmGJS2hEaZmUerqmyHAwADmuNz9L/zf6dXpv/MbLjoIum+++wGBSAuOTlSc3OHc8bmZunzz63GBHgdifQ4JCebSfz04ovSzTebvsMA4CGhkLno11aRfswx0saN0rx5VuMCgFiFQtL7e3xHqq+X/vEP2+EAwIA3cz9Hfyy8SXUXzjEbLrhAuuYau0EBiFl2tlmXlUmqqTH9Qffeu0O/FwDbI5Eeh7aK9Guuka64QvrwQ9shAUAnjmNao7cVb4ZC0tChVmMCgHiEQlJlY6qZCAsAYN20aZIvydGbJ90q/fznZuOECVZjAhC7nByzLiuTlJYmDRliNvz3v9ZiAryORHoc/H5zx4vGjzcbVqywGg8AdCUzky4IABJfMCjV1tqOAgAQkZ5u8uaLP3Kkm26SFi2Svv3t9h0++0xqaLAXIIAe6VSRLpmrZJK0dKmFaIDEQCI9DiTSASSCjIwOrV0k6dNPpeOOM21eACBBhELhRPqll0qHH24SNAAAq2bMMLm25ubwE8cxL5SWSkcdJe2/P1WtgMcFAubC2LZt4Q3Tp5v1Rx9ZiwnwOhLpcSCRDiARZGRsV5Gelia99JL0xhumBx4AJIBQyLRHdxcskN58U/riC9shAcCAN3OmGZuXLdvuhZUrTR/Ujz+W9ttP+t3vwifPALwoO7tDRfoBB5j1a69Jra3WYgK8jER6HPz+cI/0jol017UaEwBsb4dE+ujR0rBh5mRm4UJbYQFATEIhs24ZNso8WLfOXjAAAEnSmDGmv/KiRdu9MGuWuQvy5JOlpibpl7+UvvIV6csvrcQJILq8PGnz5vCTww4zJ5HFxV18uQFIJNLj4vebYwKNG2duYdu2Tdq61XZYANDJDol0x5EOOcQ8fucdKzEBQKyCQbNuGjrSPFi71l4wAABJ5rByxoxucm2DB0tPPSX97W/SoEGmgOO88/o9RgA7N3JkhxqFlBTTClSSnnnGWkyAl5FIj0NKirmNTcGgGXUk6fPPrcYEANvrcrLRSCL9kUekiop+jwkAYhWpSK8fTEU6AHjJjBnS+vUdqlk7chzp7LOlDz4wz996y1S5AvCU0aOlkpJwjkuSzj9fuu466bvftRkW4Fkk0uOQnW2K0F1X0l/+YiZRifSSAgCPyMiQqqu3a293xhnS8OHSqlXSmWeG+1QBgHdFEum1eVSkA4CXTJsm+XzS4sVRdtprL+n006XLLqMdKuBBo0aZr2ZbncKxx0rXXCPtvbfVuACvIpEeh+xsqaFBqquTdOSR0j77mOmOAcBDMjLMQVGneUVzc82ttqmp0rx5tHgB4HmR1i5VOVSkA4CXpKVJEyfuJJEuSU88Id1yi1RY2C9xAei5kSPNDSTUKQA9QyI9Djk5Zr1tm904ACCazEyzrqzc7oWZM6WHHpKee85MKAMAHhapSK/IGmXO9NomqwEA2DZjhrR06XaFGwASRkqKNGSItGZNh421tdK//iVdf72tsADPIpEeh0givbRUZoC54w7pwgu5VQ2Ap6Snm/UOfdIl0+LlhBPanzc390tMABCrSEV6ZVK2aeC5YYOUnGw3KACAJOmoo0ynwBde2MmOjY3SSy9J77/fL3EB6LnRo7erSN+yxbRkuu468xhAGxLpcehUke73Sz/7mXTvvdxqDMBTIhXpXSbSO1q7Vho/3rR8AQCPSUoy1VK1dQ6t9ADAY7KzTTL92Wd3crPQDTdIxx0n3Xxzv8UGoGdGjdquIn3UKGn6dDPZ1n/+YysswJNIpMchNdUsZWUyJ3QTJpgXPvnEalwA0FFGhlnv0NplezffLK1eLZ1yijRnjqkYAgAPCYXCc9MAADznG9+Qysul+fOj7HTyyWb94ovmrm4AnjF6tFRRYZY2ke/sM8/YCAnwLBLpccrJ6dAjfZ99zPrjj63FAwDbS042F/2qq3ey4+23S5ddZh7/4Q/SoYdyhw0ATwmFwnmXhx6SDj/ctNUDAHjCsGHSgQdKc+dG6XY6darJ1tXVmRYvADxj9Giz7lSV/vWvm/XLL3PxC+iARHqccnLCPdIlacoUs6YiHYDHZGT0oCI9OVm69Vbp6aelrCxp4ULpmGOYzA+AZ7RVpG/cKL35prRkie2QAAAdnHqqVFRkDiO75Djm7keJdoKAxwwdapotdEqk77OPafFSV2eS6QAkkUiPGxXpABJBRkYPeqRHnHyy9NFHUkGBtGKFdN99fRobAPRUMBguhho1ymzoNCMWAMC28eOlyZOlJ5+MUpX+jW+Y9XPP0UoQ8BCfTxoxYrvDq44Xv/7xDytxAV5EIj1O2dnhHulSeyJ9xQqpocFaTACwvczMGBLpkjRmjHTttebxY49FORMCgP7TlkgfOdJsoP0UAHjOKaeYU+Lly7vZYdYsafDgHjRUB9DfRo/eriJdks46y6w3bzYTjwIgkR6vnJwOifTCQpNZb2mRvvjCalwA0FGPWrts7/vfl/76V3OC4zh9ERYAxKStR3qkIn39ek7oAMBjZs401zvnzu1mh6Sk9gkMSaQDnjJqlKlT6FRHNW2ayXHNn2/K1gGQSI9XTo5pFVVfL5Noeucdk62aPNl2aADQJqbWLhHJydK555o1AHhAenp4LCssNImYpiappMR2WACADiKdID74IMqNQ5ddJv33v9Jvf9uvsQGIbvRo02Ch0+GV40hjx9oKCfAkEulxyskx67Y+6RMnmowVAHhIXIn0jhobpVde6bV4ACAeQ4dKxcVSq88vDRtmNtLeBQA857DDpLw86d//7maHvfYyrVG56xHwlMhNfzu0d4nYtk3aurW/wgE8i0R6nLKzzbqtvQsAeNAuJdKrqqRJk6Rjj5U++aRX4wKAWIwYITU3S5s2yczlUFi4i1cJAQB9we833VvefLMHOTfm4gE8IzvbnDt2OZ/7LbeYqoY//KHf4wK8hkR6nCIV6W2J9C1bpIsvbp+JHAA8IDPT3KLX2BjHmzMypOnTzUnOBRdw5RCANcOHm/WGDZJef10qKpK++lWrMQEAunbssVJKivTss93ssHGjdOaZpqk6yXTAExzHtHfpMpE+Zow5qXz4YTM3IDCAkUiPUygkBQId8krBoPSnP0lPP83tLgA8I9JxKu7CzRtuMAPeggUmqf7ee70WGwD0VG6ulJoaTqQz2RUAeFowKB1/vPTii1JNTRc7DBpker989JH08cf9Hh+Aro0e3U1rl5NOMiXrGzZIb7zRz1EB3sKZSJwcx1Slt/VIT0+X9tjDPOZgAIBH7HIifc89pbffNpPMrFsnHXKIdNNNUmtrr8UIADvjOKY1+oYNHTauWCE9/7y1mAAA3TvpJDMv9AsvdPFiWpopW5ekp57q17gAdG/kSHPDyA53M6ekSN/6lnn8t7/1e1yAl5BI3wXZ2dt1Opgxw6x/9SupttZKTADQUWamWVdW7sIP2XdfafFi6dvfNrfyXXmldOGFvRIfAPTU8OEdEulLlpix6dvfllavthoXAGBH2dnSUUeZ9i5dthg85RSz7nZWUgD9bfRoUy/VqXAh4pxzzHruXKmkpD/DAjyFRPouyMnZLpF+7bVSVpZpffDtb5tZsQDAokgive3umV35QX//u/TAA9Ixx0jXXbfLsQFALIYPl9avDz+ZMsUk0quqpO98x5Q99id6+gLATn3jG1J5uTR/fhcvnniilJRkJrRftaqfIwPQlVGjzF2AK1d28eL++0vTpkl1deb7W13d3+EBnkAifRfskEifONFcco/MrPLjH3OiBcCqtDRpxAhTvLnLHEc6/3zppZekIUN64QcCQM8NH27y5pWVkvx+6dFHTZ/dhQul006TzjpLOuww6X//a39TXxyHbd5s5ox4/HHaXAFAFMOGSbNmmaLzHYbjnBzp8MPNY9q7AJ4QDEpTp3Zz8ctxpH/9S8rLkzZtkoqL+zs8wBNIpO+CTj3SIw45RHrsMTMR1vLl5modAFh04IHSBx/00QTrTzwhff55H/xgAOhs+HCzbrvdeNQo6f77zeNnnzWJ9bfe6tzq5Z57pH32kf7f/+umvKobmzZJzzwj/eIX0pFHmrkhIn7/e+m//zV3H+6/vzmpXLOm66R9efnul2xvbTUHwPX1tiMBkABOOUUqKpL+859uXpRIpAMectRR0mefdZMnHzvWzCL8/vvSuHH9HhvgBX7bASSy7GxzN0tjoxQIdHjhG98wRwqHH24u6UnSa6+ZE7yrrpL22stGuAAGqAMOMHme5culyZN78Qffd590wQXShAkmUx+Z2RQA+kBhoSmG2rDB3AQoSTr9dJPU/eQTM0PWyJGm7UvE66+b1z75RLr6avPaYYeZK4wHHSSNGdO+74IFJiH/4osmUd7R//4n/exnplDimmvMeHfzzWb+iNNPN/tkZpqf/eyz7e/73vekV14xt0KPG2cS65s3m1saZ8+WbrxRSk7ug79WH3n3XVM04rrmGHf2bHM3wIkn8m8AgC6NH2+GiPvvN9OInX66GcslSV//umkbePzxZlxpewGALbNmSaGQSWF997td7BCZGzDio4+kPfYwbY6BAYBE+i7IyTHrbdukwYO3e3H27M7PH3zQVKo//LA5evj5z81twQDQx/bay4xX77/fy4n0r39d+s1vTEX6mWeai4WRpuwA0MsCAdNVaocJsH70o+7fdP/90gknSP/8p/Tqq+1J9bvuMkn3tWvb973kEmnRIvPYcUy2/sADzdXIQw81SXTJ9Mz61a/M5950k/m5y5aZnjMvvGDmyPGHD7GXLzdVF++8Y5aOGhpMgUVeXuft27ZJ69aZUrDiYhPnUUe1v/7AA+aCwIwZ7Z+zM01N5kT3zTdNHJs3mwuh557bvs/WrTvGUlNjGtNPmGCeDxrUXnlfV2f6Nfz73+Y/zqxZ5mJFJNYXXzRVpuvWmeqTvDwpP186+GDpiCNImAEDyA9/aHJsjz4qlZaa4cfnk7lC+tFHtsMD0EFKijnsee01Mw2NL1ofiyeekM4+W0pNlS66SLr0UqmgoL9CBawgkb4LsrPNuqysi0T69i65xJxIPfec6an5+OOmEuqii6RTTzWjFQD0Accx3QcWLjQtznstdzF4sPTkk+ZI67nnTNLpzjvNXTkA0AeGD+8ikR5NTo503nlmKS01Se/33zcTw29/z/KoUdLee0vHHSd99asm6RtNfr50663mcVOTtGKFaSvTsZXLJ5+Y7R99ZJL2ubnmBHPdOlN0EUlcl5RIc+eahP/bb3duE3PWWe3J6bIyk5FyXXPhcsoUk9hPSzPHkieeaC5sSiYBfsQR5tbJ0lJTCtpRx6KPxYvNRYOvfc1UzweDJjn+pz+Z9y9dapLo48ebv1t2trlI8K9/meWLL0yS/pe/bP+ZCxa0t97Z3oQJ5uR7n32i/40B7BYcRzrjDDMk33WXuV74s59td1c3AM84+mhzPfzjj81hQbd8PnPH3WefSTfcIN1+u3TyyaZt0+zZUnp6P0UM9B8S6bugY0X6Th1wgLnVd+lSU7305JPmBGPBAumvfzW3/UqmOunLL82Ak59Pgh1ArzjwQHMwtHatNHp0L//gl1+Wvv990/rglFNMpfpdd5kZpgCgFw0fbvLgccnNNZmcM84wz5ubO7/+5JPxB5acbG752f62H79fmjTJLN1xXem3vzXjZkRBgTR0qFk63sFYXm7G2DfeMI/ffbfzzxo8uD2R7jidJ17NzjYXPg87zNyCvffe7a+9/LL5e0QqzDsqLDQ94KdONb9nZLLpadPMEuk/P3++KRKJOPZYc4Fh7FhTrb9li0nuP/20uRrSq/8YAUgEX/2qqUy/8UZzY8/VV4e7QlVXS488YsaICy+URoywHSowoO21lzmVe/XVnSTSv/lNUxj63HPS735n2n1GCkdTU03+a/x4s29Li5SU1A/RA32LRPouyMgw50dlZTG8ado00+LlttukP//ZVOoccUT761980d7bMzXVTHB1/PGmQogDCgBx2mcfU2C4cGEf5C4OP9xUXf6//2d6Bj/3nHTdde2JdHpeAuglw4eb4u0d5qeJR0/bovS1hQvNnBMHHGDa/33zm90f8+2xh0l0t7SYk9M1a0z7lZoaM/nnvvu271tQYBLtKSmmQGPcuO7vz77qKlPN/vjjpsVLXZ1Zhg0zma7c3O7jdxxzkhw5UY44+GCzbK+yUlqypL0VmOua28KPOcZcBIh6DzmARLfffibfdt110hVXmHX+Bee0X8S76SYzHl1wgbkgx5gA9DvHMVXpjz1mDjHS0qLs7POZKvSvfc0k0ufONUt9fecJSb/9bXPOOHOmGQj220/ac09zjEGCHQnEcd2O9456U2VlpQYNGqSKigpleqz/7ve+Z3JIZ58d5w9obTVng6mp5vmSJeb23aqqzpVSfr9JUF16KQkp7Ja8/D3fmUSJ/aabTALqD3/oww/59FNzp80Pf9i+7fjjTUsAbvFDAkuU73lXEjn27S1bZhIvd91lOrHsFlpazO2N2/cnHyjmzTN97CXzNzjiCHMsfNRR5gSb494eSeTveSLHjvgVFZm5m5ubpet+2ajRS5+W7r3X3HETMWaMOab8wQ+iX9CD5yXy9zyRY98VZWVmKpUf/9h0vYuJ60qbNrXfxSaZA7d163bc13FMMWnHid6vv94cGxUWti95eeYifGZme59loJfE8j33SClO4srJibEifXs+X3sSXTK375aVmYHns8/MycXTT5tennPmmMqg00/f1bABDECzZkm33NL1fHK9ZvvWBhs2mMn3JFPpmJJiqg6/9jXTFmbvvalAANBjw4eb9YYNu1EiPSlp4CbRJZM4v/FGs2zd2t53XTL/we+807SzkUyfd8cxt1gBSGjDhplpJq69Vrri6oDmzDldM185XUlffG7u0nnoIdPy9KqrTCFGJJH+xBOmMiQU6rwEg2Y9c2b7h6xbZ8YNn8+MtZHF5zPL0KHt+1ZXt7eeiLzecXEcLuxhQMnJMTe6vfpqHIl0x+mcRJekDz80c7J8+GH745ISk/va/nzw7383beO6MmaMmZMm4ogjzL5paaZgKz3d3LbY2mruznv88fZ9L7zQzPHS3GyWpqb2dVaWKQiL+M53TD/BQMDk7IJBs05ONmPN00+37/vEE6Y1VWZm+36pqe3z2Oy3X/vdNVVV5ncOBMzCXTcJh0T6LsrO7mGP9Fg5TntC6mc/k+65x/RRP+20PvgwAAPBjBnmGGXhwvbivz43bJj5wCefNLfs/u9/pvXLc8+Z1y+4wIxvEa2tHEwA6FZmpmmtF9OEo/C2YNDcZjBnjrkl/NVXpddeMyevGzZ0nvT1r3+VLr7YJNgj/d4POcRcVQmFon9ORYUpVqmvN21r9tmnvb1PRYU50fVKux9ggMjONvMT3nCD6RCYni7tu+8E7XfyHzTjyt8q44V/moKyqVPb33TXXdI773T9AzMyTPuoiB/8wMwB0ZWkpM53gJ91VufE2Pbq6toL4M46y/S86Hhzf8fHpaXtFbM/+pFp6dqddevarxJfdpl0xx077hNJ4H/2mWleLZm2Wzfe2PXnSyZRGZlj4+abTfl/5GLA9hcGXnrJVNxI5rj8qqt2/OyIuXNN+1nJJB+Tk7v/3ZDwjjnGfD9ffDGOZPr2CgrMRbGOk503N3c9Ifoll5gLacXF0saNZikrM0nojIzO+5aUmNe7sn2rvEWLzNKVyCSIERs3mhi6sn2vm4ceMn+k7rS0tD8+7zzzPYpISmpPqgcCpm1f5JjmqqtMcW1ysilICwTa10lJ0sMPt/89/vGP9pZ+ycnmmCayTkqSLrqova3eggXmTvLIxcXIuODzmf1nz27f94svTEyRC5LbrydNav97lJaa/05JSebndFwk8zMjj+vqTN+grjiO2TcyvkQudkTGLtc1eYPWVvN6Skr7z21uNnNPOo7Z1gezWnO0uItycsxtxn3Kccz9NBde2P4PWVmZqc75yU/MbTC5ueYfayo7AXQjLc0MF++/34+JdMeR9t/fLDfdZP7B/ve/zW27ixd3nkRv+XJzYP71r5vlkEN2nhgBMOAMH04ifbeUnNzeV/3XvzYn1e+/b6q4IkpKzHrDBnPC+I9/tL+WlmYS8RMnmuevvGJOapcvNz1Zt/+fpqTETM4qmZLYP//Z/Ft14IFmTqPCQlNNV1DQfjIpmRPwZcvMyf2WLe0nan6/OR4/91xT1QagR0Ih08Vh5Urz9frgA+mttyTHCWnChHM186hztf8ac73McWRmLB0+3IwRkSWSkNn+bpX0dHOO3NpqElktLe3Jl+0LNyIJme50PM+O/LyecN0dk9wddUxUx/JzW1t3nDS7O01NJrEU7WdFNDaai4vd6elnYrcwa5Z00knSn/5kvjLHHNPLH+D3t/9b3NGPf9z9e7b/jjz3nLmAFpkzprra/H+clLRjwvuGG0yyt2OSOTm5PVHd0d13m5/b2GguwkcuxHf1HfjqV80xQHW12Seyb22tibfjeNPYuOPvE5mbRuqc+F27Vvr44579LV5/XXrwwe73Pfvs9uOZf/6z64t2EStXtu/717+av1t3lixpn5H23nvNTNLdWbCg/aLdvfeaIoruvPKKadQvmd/rggu63/fpp02ffslc5Iz03j77bOlvf+v+fXGKK5F+991365ZbblFxcbEmTZqk22+/XYcccki3+7/55puaM2eOPvvsMxUWFurnP/+5Loj2R0ggOTnmOPq116SvfGXH716v6viP7B13SG+/bZaOkpPNF+8//zHN2yXpmWfMfXMdb0WJXG1KTjZXviPJrA8/NLfTJie33xqTmtp+AHDMMWaiK8lcnXvzzR1vkYssM2dKI0eafTdvlj76yDyOHLxEDigiPbEi92iXlZkvY8fb6CL7ua75/MhV+/JyE3PHK2gd4xk50pwISWYQW7as8+d3jGHYsPZ46+vbB6yuDnyGDGmPt6nJVAd0Jyen/ec2N5vkYeSzI1fSIgd1BQXmil7kcxcs6Fwx0PFvkZXVefKODz7YsSoisgwa1P5zJXNi2tzc+e8WWTIy2isdJNOrrLGx61sZg8HOP/ezzzofpOXk9MHMljvHGNW9Aw80uYKdThrTFyLf9SlTTJKkpaXzgcgzz5jExr33miU52Uy+d/jhZoA9+GD6q2O3wBi1a4YP775AqK9UVEirVpminJISczGy4z/B6AOhUHvVY8T115uTriVLpPnzzXHoBx+Y47aams4J7Bde2HFSkFCo/fbspqb27Y2N5v1vvNG5P3NEU1N7pdMtt5gT0O5897vtj++808Q3dar5HzctzcSQlmbi2Gef9pPrior26s7UVHM8b6mNBGMU+lvHOYvPPNOcDi5a1H5q+sgjpgPW9OnStMOv0dRLzOnNTnWs+uzJvs3NnSsdOy4d71i56y5zfh0JvuMvInUO7tZbpd/8pvNndTxn63jXzXXXST//efeJ94KC9sdXXGEqTDvqGEvHlmH/93+mij7yu0XWEcOGtT8++2wzv9H2cXa1r6W7eBij+o/jmBs7WlvNP2mOY3LGVm1fPDp2bM/fG0nM9kTkwnxPREsIb++pp9ovbjU1mWOQxsb2bR1/v1/8wlSwR/ZpbDT7NDaac+mORWdf+5rJfTU0tLeuiVRyt7R0Po+eMsUUrjU3d86PRc7POyYKhgwxxzGRnFXHdUtL51bVgYBJwEd+zvbn+7FM0dlxPPPa1J5ujB5//HE3OTnZ/fOf/+wuW7bMveSSS9y0tDR37dq1Xe6/evVqNxQKuZdccom7bNky989//rObnJzsPvnkkz3+zIqKCleSW1FREWu4fW7LFte9+mrXPfFE1z3jDNe97z7X3bChHz64tNR1r7rKdceOdd3MzI4pU7O8+Wb7vrffvuPrHZcXXmjf98EHo+87d277vo89Fn3fv/2tfd9nn42+7z33tO/76qvR9/3979v3XbAg+r7XX9++79Kl0fe94or2fVetir7vRRe177txY/R9v/e99n3Ly6Pve8YZ7fs2N0ff96STOv8/EQh0v++RR3beNzu7+30POKDzvsOGdb/vlCmd9x0/vvPrZ5/t9lRvfc8Zo6LbssWMV5dd5rr//Kfrrlzpui0ttqMKa2hw3RdfdN0f/tB1hw/f8f+3//63fd+bb3bdwkLXnTzZdQ85xHwfvvEN1z31VNc97TTX/fLL9n0XLDD7//GPrnvvva77l7+47qOPuu4//mGWLVva912xwoxzTz/tus8957r/+Y/rzptn4nrpJTP2RhQVue5bb7nuO++47nvvue6HH7rukiWu++mn5udUV7fvW13tuuvXu+66da67dq3rrlljlnXrzD8atbXt+zY1uW59vRkDmppct7HR/G0aGsxjz/wHS3CtrWbpIcYo7/j3v83XPIb/fHFpajJf8csvN+PmiSe67re+5brnn++6J5/suk8+2fcxoAdaW123osJ1v/jCjJsR//qX6/70p+YY8513zDFYd5qbzdj9wAPmP/BBB7nunnu6bihk/v0pK2vf96abXPfoo133rLPMP6aXX+66l17quhdfbLZ1/J/iuOOiH8s1NbXve/rpnV9zHNc955we/xkYo7C7amw0h1f33++6P/5x+3j8k5+YU9ePPjKHSPA2xqjE1trqun/6kznlevJJ1920yXZESBitreZ4p6mp8zFS5FystdWc33Zcmps7n/M2NrpuVZU53tu2zayrqsw5dk1N5+OppiazvarKdevqehxmLN/zmC8h3nbbbTr//PP1/e9/X5J0++2366WXXtI999yjG7oo97/33ns1cuRI3X777ZKkvffeW4sWLdKtt96qU089NZ7cv6fk5ZnimJIS037t5ZdNMfjMmaZaqe/u7MyRzv+dWSSpqUm+ynI5jQ1ymhrVkjtU7v/MS/7JJyjlruFyGurl1NfJaYlcdWqR09SkmtDeag7vm5I1WennXyY1NcpXWyOnrka+hnq54crl8pahagjvm9o6VFmHzZbT0mJ+VtsV+xbJdbWtZbDqIvtWZSpvoql6dyPV4nIkmdOF8tYC1URiKAspf6/J5ue54SvlkdMKn0/lTdmqCu8bKEtTwYR9JNcNf765KhZ5XN6cpcrwvsmbUjR06IgOFd4dqt1dV5XKVXnkb1bkV+GwUZ0rwCNcV1W+PG0L75tUmqThBUN33C+sWlkqDe/r1CRpxPDR4f1MhXnb38PxqTZjRNu+apFGjtzT/N7hv1Pb30JSXUq+tvyv/XNGDBstp6nDbUIdPqM+o1CbO+w7bMRY+bIqOv/dXFdOS4sa0gpU0nHf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AAAAAACAECikAwAAAAAAAAAQAoV0AAAAAAAAAABCoJAOAAAAAAAAAEAIFNIBAAAAAAAAAAiBQjoAAAAAAAAAACFQSAcAAAAAAAAAIAQK6QAAAAAAAAAAhEAhHQAAAAAAAACAECikAwAAAAAAAAAQAoV0AAAAAAAAAABCoJAOAAAAAAAAAEAIFNIBAAAAAAAAAAiBQjoAAAAAAAAAACFQSAcAAAAAAAAAIAQK6QAAAAAAAAAAhEAhHQAAAAAAAACAECikAwAAAAAAAAAQAoV0AAAAAAAAAABCoJAOAAAAAAAAAEAIFNIBAAAAAAAAAAiBQjoAAAAAAAAAACFQSAcAAAAAAAAAIAQK6QAAAAAAAAAAhEAhHQAAAAAAAACAECikAwAAAAAAAAAQAoV0AAAAAAAAAABCoJAOAAAAAAAAAEAIFNIBAAAAAAAAAAiBQjoAAAAAAAAAACFQSAcAAAAAAAAAIAQK6QAAAAAAAAAAhEAhHQAAAAAAAACAECikAwAAAAAAAAAQAoV0AAAAAAAAAABCoJAOAAAAAAAAAEAIFNIBAAAAAAAAAAiBQjoAAAAAAAAAACFQSAcAAAAAAAAAIAQK6QAAAAAAAAAAhEAhHQAAAAAAAACAECikAwAAAAAAAAAQAoV0AAAAAAAAAABCoJAOAAAAAAAAAEAIFNIBAAAAAAAAAAiBQjoAAAAAAAAAACFQSAcAAAAAAAAAIAQK6QAAAAAAAAAAhEAhHQAAAAAAAACAECikAwAAAAAAAAAQAoV0AAAAAAAAAABCoJAOAAAAAAAAAEAIFNIBAAAAAAAAAAiBQjoAAAAAAAAAACFQSAcAAAAAAAAAIAQK6QAAAAAAAAAAhEAhHQAAAAAAAACAECikAwAAAAAAAAAQAoV0AAAAAAAAAABCoJAOAAAAAAAAAEAIFNIBAAAAAAAAAAiBQjoAAAAAAAAAACFQSAcAAAAAAAAAIAQK6QAAAAAAAAAAhEAhHQAAAAAAAACAECikAwAAAAAAAAAQAoV0AAAAAAAAAABCoJAOAAAAAAAAAEAIFNIBAAAAAAAAAAiBQjoAAAAAAAAAACFQSAcAAAAAAAAAIAQK6QAAAAAAAAAAhEAhHQAAAAAAAACAECikAwAAAAAAAAAQAoV0AAAAAAAAAABCoJAOAAAAAAAAAEAIdS6kz5kzR2PHjlVGRoYsy9K77757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",
      "text/plain": [
       "<Figure size 1500x1500 with 25 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import torch\n",
    "import matplotlib.pyplot as plt\n",
    "from pathlib import Path\n",
    "import random\n",
    "\n",
    "# 设备配置\n",
    "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
    "\n",
    "model = EnhancedTactileCNN().to(device)\n",
    "model.load_state_dict(torch.load('best_model_ever.pth', map_location=device, weights_only=True))\n",
    "model.eval()\n",
    "\n",
    "\n",
    "# 修改后的可视化函数 ============================================\n",
    "def visualize_predictions(data_divider, meta_samples, preds):\n",
    "    plt.figure(figsize=(15, 15))\n",
    "\n",
    "    former_frame_sum = 0\n",
    "    batch_tac, batch_labels = data_divider.create_dataset(meta_samples)\n",
    "    for i, meta in enumerate(meta_samples):\n",
    "        ax = plt.subplot(5, 5, i+1)\n",
    "        \n",
    "        # 获取完整时间序列\n",
    "        labels = batch_labels[i]\n",
    "        explen = labels.shape[0]\n",
    "        \n",
    "        # 绘制完整真实序列\n",
    "        ax.plot(labels, 'b-', lw=1, alpha=0.7)\n",
    "        \n",
    "        # 标记当前帧位置\n",
    "        ax.plot(preds[former_frame_sum:former_frame_sum + explen], color='r', linestyle='--', lw=1.5)\n",
    "        \n",
    "        \n",
    "        # 格式设置\n",
    "        ax.set_ylim(0, 1.5)\n",
    "        ax.set_xticks([])\n",
    "        ax.set_yticks([0, 0.5, 1.0, 1.5])\n",
    "        ax.grid(True, alpha=0.3)\n",
    "        \n",
    "        former_frame_sum += explen\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "# 修改后的主流程 ================================================\n",
    "if __name__ == \"__main__\":\n",
    "    # 初始化采样器\n",
    "    \n",
    "    # 随机选择25个元数据\n",
    "    random.seed(42)\n",
    "    meta_samples = random.sample(test_meta, 25)\n",
    "    batch_tac, batch_labels = data_divider.create_dataset(meta_samples)\n",
    "    \n",
    "    # 批量加载样本并预测\n",
    "    \n",
    "    batch_tac = np.concatenate(batch_tac)\n",
    "    batch_labels = np.concatenate(batch_labels)\n",
    "    batch_tac = (batch_tac - mean) / std  # 标准化\n",
    "    \n",
    "    # 转换为张量\n",
    "    tac_tensor = torch.tensor(batch_tac, dtype=torch.float32)\n",
    "    tac_tensor = tac_tensor.view(-1, 20, 20, 9).permute(0, 3, 1, 2).to(device)\n",
    "    \n",
    "    # 预测\n",
    "    with torch.no_grad():\n",
    "        preds = model(tac_tensor).cpu().numpy().squeeze()\n",
    "    \n",
    "    # 可视化\n",
    "    visualize_predictions(data_divider, meta_samples, preds)\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "gentle-grasp",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.18"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
